mirror of
https://github.com/owntone/owntone-server.git
synced 2025-02-03 01:46:02 -05:00
Fix endianness of decodeflow
This commit is contained in:
parent
e9a2c26465
commit
874821fbe1
@ -169,7 +169,7 @@ int lookup_tag(char *tag, char *descr, int *type) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
int decode_tag(FILE *fout, unsigned char *current, int level, int len) {
|
||||
int type;
|
||||
int subtag_len;
|
||||
int tempint;
|
||||
@ -179,13 +179,24 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
char line[4096];
|
||||
char templine[4096];
|
||||
|
||||
unsigned char cval;
|
||||
unsigned short int sival;
|
||||
unsigned int ival;
|
||||
unsigned long long lival;
|
||||
|
||||
while(len) {
|
||||
memset(tag,0,sizeof(tag));
|
||||
memcpy(tag,current,4);
|
||||
current += 4;
|
||||
len -= 4;
|
||||
|
||||
memcpy((char*)&subtag_len,current,4);
|
||||
subtag_len = current[0] << 24 |
|
||||
current[1] << 16 |
|
||||
current[2] << 8 |
|
||||
current[3];
|
||||
|
||||
// fprintf(stderr,"Tag: %c%c%c%c, subtag len: %d, len: %d\n",
|
||||
// tag[0],tag[1],tag[2],tag[3],subtag_len, len);
|
||||
current += 4;
|
||||
len -= 4;
|
||||
|
||||
@ -202,7 +213,8 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
tag,subtag_len);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
sprintf(templine,"%02x (%d)\n",*((char*)current),(int)(*((char*)current)));
|
||||
cval = *current;
|
||||
sprintf(templine,"%02x (%d)\n",cval, (int)cval);
|
||||
current += 1;
|
||||
len -= 1;
|
||||
break;
|
||||
@ -213,7 +225,9 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
tag,subtag_len);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
sprintf(templine,"%02x %d\n",*((short int*)current),(int)(*((short int *)current)));
|
||||
sival = current[0] << 8 |
|
||||
current[1];
|
||||
sprintf(templine,"%02x %d\n",sival,(int)sival);
|
||||
current += 2;
|
||||
len -= 2;
|
||||
break;
|
||||
@ -236,7 +250,11 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
*((char*)current+3),
|
||||
*((int*)current));
|
||||
} else {
|
||||
sprintf(templine,"%04x (%d)\n",*((int*)current),*((int*)current));
|
||||
ival = current[0] << 24 |
|
||||
current[1] << 16 |
|
||||
current[2] << 8 |
|
||||
current[3];
|
||||
sprintf(templine,"%04x (%d)\n",ival,ival);
|
||||
}
|
||||
current += 4;
|
||||
len -= 4;
|
||||
@ -249,7 +267,21 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
sprintf(templine,"%04x%04x (%lu)\n",*((int*)current),*((int*)current+4),*((long long*)current));
|
||||
lival = current[0] << 24 |
|
||||
current[1] << 16 |
|
||||
current[2] << 8 |
|
||||
current[3];
|
||||
|
||||
lival = lival << 32;
|
||||
lival = lival | current [4] << 24 |
|
||||
current[5] << 16 |
|
||||
current[6] << 8 |
|
||||
current[7];
|
||||
|
||||
sprintf(templine,"%04x%04x (%lu)\n",
|
||||
(unsigned int)((lival >> 32) & 0xFFFFFFFF),
|
||||
(unsigned int)(lival & 0xFFFFFFFF),
|
||||
lival);
|
||||
current += 8;
|
||||
len -= 8;
|
||||
break;
|
||||
@ -273,9 +305,12 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
tempint = *((int*)current);
|
||||
sprintf(templine,"%d.%d\n",tempint >> 16 & 0xFFFF,
|
||||
tempint & 0xFFFF);
|
||||
ival = current[0] << 24 |
|
||||
current[1] << 16 |
|
||||
current[2] << 8 |
|
||||
current[3];
|
||||
sprintf(templine,"%d.%d\n",ival >> 16 & 0xFFFF,
|
||||
ival & 0xFFFF);
|
||||
|
||||
current += 4;
|
||||
len -= 4;
|
||||
@ -315,7 +350,7 @@ int decode_tag(FILE *fout, char *current, int level, int len) {
|
||||
|
||||
|
||||
|
||||
void decode_dmap(int conv, char *uncompressed, long uncompressed_size) {
|
||||
void decode_dmap(int conv, unsigned char *uncompressed, long uncompressed_size) {
|
||||
char buffer[256];
|
||||
FILE *fout;
|
||||
|
||||
@ -365,7 +400,7 @@ int main(int argc, char *argv[]) {
|
||||
int done=0;
|
||||
FILE *out;
|
||||
char *compressed;
|
||||
char *uncompressed;
|
||||
unsigned char *uncompressed;
|
||||
long compressed_size;
|
||||
long uncompressed_size;
|
||||
int err;
|
||||
@ -403,7 +438,7 @@ int main(int argc, char *argv[]) {
|
||||
out=fdopen(STDOUT_FILENO,"w");
|
||||
uncompressed_size=lseek(fd,0,SEEK_END);
|
||||
lseek(fd,0,SEEK_SET);
|
||||
uncompressed=(char*)malloc(uncompressed_size);
|
||||
uncompressed=(unsigned char*)malloc(uncompressed_size);
|
||||
read(fd,uncompressed,uncompressed_size);
|
||||
decode_tag(out,uncompressed,0,uncompressed_size);
|
||||
exit(EXIT_SUCCESS);
|
||||
@ -451,7 +486,7 @@ int main(int argc, char *argv[]) {
|
||||
uncompressed_size = 20 * compressed_size;
|
||||
|
||||
compressed=(char*)malloc(compressed_size);
|
||||
uncompressed=(char*)malloc(uncompressed_size);
|
||||
uncompressed=(unsigned char*)malloc(uncompressed_size);
|
||||
|
||||
if((!compressed) || (!uncompressed)) {
|
||||
perror("malloc");
|
||||
|
Loading…
x
Reference in New Issue
Block a user