kopia lustrzana https://github.com/F5OEO/tstools
More transfer to the new IO model -- especially, misc.c and its implications.
--HG-- extra : convert_revision : svn%3Aeff31bef-be4a-0410-a8fe-e47997df2690/trunk%40136issue20
rodzic
6b4c838ad8
commit
574a59f25c
4
adts.c
4
adts.c
|
@ -83,7 +83,7 @@ extern int read_next_adts_frame(int file,
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
print_msg("ADTS frame\n");
|
print_msg("ADTS frame\n");
|
||||||
print_data(stdout,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
|
print_data(TRUE,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (header[0] != 0xFF || (header[1] & 0xF0) != 0xF0)
|
if (header[0] != 0xFF || (header[1] & 0xF0) != 0xF0)
|
||||||
|
@ -150,7 +150,7 @@ extern int read_next_adts_frame(int file,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
print_data(stdout,"Again",data,frame_length,20);
|
print_data(TRUE,"Again",data,frame_length,20);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
err = build_audio_frame(frame);
|
err = build_audio_frame(frame);
|
||||||
|
|
|
@ -250,7 +250,7 @@ static void report_ES_units(ES_p es,
|
||||||
report_ES_unit(stdout,&unit);
|
report_ES_unit(stdout,&unit);
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
print_data(stdout," Data",
|
print_data(TRUE," Data",
|
||||||
unit.data,unit.data_len,10);
|
unit.data,unit.data_len,10);
|
||||||
|
|
||||||
if (max > 0 && count >= max)
|
if (max > 0 && count >= max)
|
||||||
|
@ -604,10 +604,10 @@ static void report_h262_items(ES_p es,
|
||||||
count++;
|
count++;
|
||||||
|
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
report_h262_item(stdout,item);
|
report_h262_item(item);
|
||||||
|
|
||||||
if (verbose)
|
if (verbose)
|
||||||
print_data(stdout," Data",
|
print_data(TRUE," Data",
|
||||||
item->unit.data,item->unit.data_len,10);
|
item->unit.data,item->unit.data_len,10);
|
||||||
free_h262_item(&item);
|
free_h262_item(&item);
|
||||||
|
|
||||||
|
|
21
h262.c
21
h262.c
|
@ -161,21 +161,20 @@ extern void free_h262_item(h262_item_p *item)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out useful information about this MPEG2 item, on the given stream.
|
* Print out useful information about this MPEG2 item
|
||||||
*/
|
*/
|
||||||
extern void report_h262_item(FILE *stream,
|
extern void report_h262_item(h262_item_p item)
|
||||||
h262_item_p item)
|
|
||||||
{
|
{
|
||||||
fprintf(stream,OFFSET_T_FORMAT_08 "/%04d: MPEG2 item %02x (",
|
fprint_msg(OFFSET_T_FORMAT_08 "/%04d: MPEG2 item %02x (",
|
||||||
item->unit.start_posn.infile,
|
item->unit.start_posn.infile,
|
||||||
item->unit.start_posn.inpacket,item->unit.start_code);
|
item->unit.start_posn.inpacket,item->unit.start_code);
|
||||||
print_h262_start_code_str(stream,item->unit.start_code);
|
print_h262_start_code_str(stdout,item->unit.start_code); // XXX Fix
|
||||||
fprintf(stream,")");
|
print_msg(")");
|
||||||
if (item->unit.start_code == 0)
|
if (item->unit.start_code == 0)
|
||||||
fprintf(stream," %d (%s)",item->picture_coding_type,
|
fprint_msg(" %d (%s)",item->picture_coding_type,
|
||||||
H262_PICTURE_CODING_STR(item->picture_coding_type));
|
H262_PICTURE_CODING_STR(item->picture_coding_type));
|
||||||
fprintf(stream," size %d",item->unit.data_len);
|
fprint_msg(" size %d",item->unit.data_len);
|
||||||
fprintf(stream,"\n");
|
print_msg("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
@ -845,7 +844,7 @@ extern int get_next_h262_single_picture(h262_context_p context,
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
printf("__ fake AFD ");
|
printf("__ fake AFD ");
|
||||||
print_bits(stdout,4,(*picture)->afd);
|
print_bits(4,(*picture)->afd);
|
||||||
printf(", i.e., %s",SHORT_AFD_STR((*picture)->afd));
|
printf(", i.e., %s",SHORT_AFD_STR((*picture)->afd));
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
@ -1167,7 +1166,7 @@ extern void report_h262_picture(h262_picture_p picture,
|
||||||
printf(" AFD ");
|
printf(" AFD ");
|
||||||
else
|
else
|
||||||
printf(" afd ");
|
printf(" afd ");
|
||||||
print_bits(stdout,4,picture->afd);
|
print_bits(4,picture->afd);
|
||||||
printf(", i.e., %s",SHORT_AFD_STR(picture->afd));
|
printf(", i.e., %s",SHORT_AFD_STR(picture->afd));
|
||||||
printf("\n");
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -61,10 +61,9 @@ extern int build_h262_item(h262_item_p *item);
|
||||||
*/
|
*/
|
||||||
extern void free_h262_item(h262_item_p *item);
|
extern void free_h262_item(h262_item_p *item);
|
||||||
/*
|
/*
|
||||||
* Print out useful information about this MPEG2 item, on the given stream.
|
* Print out useful information about this MPEG2 item
|
||||||
*/
|
*/
|
||||||
extern void report_h262_item(FILE *stream,
|
extern void report_h262_item(h262_item_p item);
|
||||||
h262_item_p item);
|
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
// MPEG2 item *data* stuff
|
// MPEG2 item *data* stuff
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
|
|
|
@ -300,7 +300,7 @@ extern int read_next_l2audio_frame(int file,
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
printf("MPEG layer 2 frame\n");
|
printf("MPEG layer 2 frame\n");
|
||||||
print_data(stdout,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
|
print_data(TRUE,"Start",header,JUST_ENOUGH,JUST_ENOUGH);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
while (header[0] != 0xFF || (header[1] & 0xe0) != 0xe0)
|
while (header[0] != 0xFF || (header[1] & 0xe0) != 0xe0)
|
||||||
|
|
318
misc.c
318
misc.c
|
@ -120,7 +120,7 @@ extern uint32_t crc32_block(uint32_t crc, byte *pData, int blk_len)
|
||||||
/*
|
/*
|
||||||
* Print out (the first `max`) bytes of a byte array.
|
* Print out (the first `max`) bytes of a byte array.
|
||||||
*
|
*
|
||||||
* - `stream` is the stream to print on.
|
* - if `is_msg` then print as a message, otherwise as an error
|
||||||
* - `name` is identifying text to start the report with.
|
* - `name` is identifying text to start the report with.
|
||||||
* - `data` is the byte data to print. This may be NULL.
|
* - `data` is the byte data to print. This may be NULL.
|
||||||
* - `length` is its length
|
* - `length` is its length
|
||||||
|
@ -133,7 +133,7 @@ extern uint32_t crc32_block(uint32_t crc, byte *pData, int blk_len)
|
||||||
* where no more than `max` bytes are to be printed (and "..." is printed
|
* where no more than `max` bytes are to be printed (and "..." is printed
|
||||||
* if not all bytes were shown).
|
* if not all bytes were shown).
|
||||||
*/
|
*/
|
||||||
extern void print_data(FILE *stream,
|
extern void print_data(int is_msg,
|
||||||
char *name,
|
char *name,
|
||||||
byte data[],
|
byte data[],
|
||||||
int length,
|
int length,
|
||||||
|
@ -143,29 +143,28 @@ extern void print_data(FILE *stream,
|
||||||
|
|
||||||
if (length == 0)
|
if (length == 0)
|
||||||
{
|
{
|
||||||
fprintf(stream,"%s (0 bytes)\n",name);
|
fprint_msg_or_err(is_msg,"%s (0 bytes)\n",name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX_LINE_LENGTH 80
|
#define MAX_LINE_LENGTH 80
|
||||||
|
|
||||||
fprintf(stream,"%s (%d byte%s):",name,length,(length==1?"":"s"));
|
fprint_msg_or_err(is_msg,"%s (%d byte%s):",name,length,(length==1?"":"s"));
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
fprintf(stream," <null>"); // Shouldn't happen, but let's be careful.
|
fprint_msg_or_err(is_msg," <null>"); // Shouldn't happen, but let's be careful.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (ii = 0; ii < (length<max?length:max); ii++)
|
for (ii = 0; ii < (length<max?length:max); ii++)
|
||||||
fprintf(stream," %02x",data[ii]);
|
fprint_msg_or_err(is_msg," %02x",data[ii]);
|
||||||
if (max < length)
|
if (max < length)
|
||||||
fprintf(stream,"...");
|
fprint_msg_or_err(is_msg,"...");
|
||||||
}
|
}
|
||||||
fprintf(stream,"\n");
|
fprint_msg_or_err(is_msg,"\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out (the last `max`) bytes of a byte array.
|
* Print out (the last `max`) bytes of a byte array.
|
||||||
*
|
*
|
||||||
* - `stream` is the stream to print on.
|
|
||||||
* - `name` is identifying text to start the report with.
|
* - `name` is identifying text to start the report with.
|
||||||
* - `data` is the byte data to print. This may be NULL.
|
* - `data` is the byte data to print. This may be NULL.
|
||||||
* - `length` is its length
|
* - `length` is its length
|
||||||
|
@ -178,8 +177,7 @@ extern void print_data(FILE *stream,
|
||||||
* where no more than `max` bytes are to be printed (and "..." is printed
|
* where no more than `max` bytes are to be printed (and "..." is printed
|
||||||
* if not all bytes were shown).
|
* if not all bytes were shown).
|
||||||
*/
|
*/
|
||||||
extern void print_end_of_data(FILE *stream,
|
extern void print_end_of_data(char *name,
|
||||||
char *name,
|
|
||||||
byte data[],
|
byte data[],
|
||||||
int length,
|
int length,
|
||||||
int max)
|
int max)
|
||||||
|
@ -187,35 +185,34 @@ extern void print_end_of_data(FILE *stream,
|
||||||
int ii;
|
int ii;
|
||||||
if (length == 0)
|
if (length == 0)
|
||||||
{
|
{
|
||||||
fprintf(stream,"%s (0 bytes)\n",name);
|
fprint_msg("%s (0 bytes)\n",name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stream,"%s (%d byte%s):",name,length,(length==1?"":"s"));
|
fprint_msg("%s (%d byte%s):",name,length,(length==1?"":"s"));
|
||||||
if (data == NULL)
|
if (data == NULL)
|
||||||
fprintf(stream," <null>"); // Shouldn't happen, but let's be careful.
|
print_msg(" <null>"); // Shouldn't happen, but let's be careful.
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (max < length)
|
if (max < length)
|
||||||
fprintf(stream," ...");
|
print_msg(" ...");
|
||||||
for (ii = (length<max?0:length-max); ii < length; ii++)
|
for (ii = (length<max?0:length-max); ii < length; ii++)
|
||||||
fprintf(stream," %02x",data[ii]);
|
fprint_msg(" %02x",data[ii]);
|
||||||
}
|
}
|
||||||
fprintf(stream,"\n");
|
print_msg("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out the bottom N bits from a byte on the given stream
|
* Print out the bottom N bits from a byte
|
||||||
*/
|
*/
|
||||||
extern void print_bits(FILE *stream,
|
extern void print_bits(int num_bits,
|
||||||
int num_bits,
|
|
||||||
byte value)
|
byte value)
|
||||||
{
|
{
|
||||||
int ii;
|
int ii;
|
||||||
byte masks[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
|
byte masks[8] = {0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01};
|
||||||
for (ii = 8-num_bits; ii < 8; ii++)
|
for (ii = 8-num_bits; ii < 8; ii++)
|
||||||
{
|
{
|
||||||
fprintf(stream,"%d",((value & masks[ii]) >> (8-ii-1)));
|
fprint_msg("%d",((value & masks[ii]) >> (8-ii-1)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,7 +265,7 @@ extern int read_bytes(int input,
|
||||||
return EOF;
|
return EOF;
|
||||||
else if (length == -1)
|
else if (length == -1)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error reading %d bytes: %s\n",num_bytes,
|
fprint_err("### Error reading %d bytes: %s\n",num_bytes,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -332,7 +329,7 @@ extern offset_t tell_file(int filedes)
|
||||||
offset_t newposn = lseek(filedes,0,SEEK_CUR);
|
offset_t newposn = lseek(filedes,0,SEEK_CUR);
|
||||||
#endif
|
#endif
|
||||||
if (newposn == -1)
|
if (newposn == -1)
|
||||||
fprintf(stderr,"### Error determining current position in file: %s\n",
|
fprint_err("### Error determining current position in file: %s\n",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return newposn;
|
return newposn;
|
||||||
}
|
}
|
||||||
|
@ -373,7 +370,7 @@ extern int open_binary_file(char *filename,
|
||||||
filedes = open(filename,flags);
|
filedes = open(filename,flags);
|
||||||
}
|
}
|
||||||
if (filedes == -1)
|
if (filedes == -1)
|
||||||
fprintf(stderr,"### Error opening file %s for %s: %s\n",
|
fprint_err("### Error opening file %s for %s: %s\n",
|
||||||
filename,(for_write?"write":"read"),strerror(errno));
|
filename,(for_write?"write":"read"),strerror(errno));
|
||||||
return filedes;
|
return filedes;
|
||||||
}
|
}
|
||||||
|
@ -395,7 +392,7 @@ extern int close_file(int filedes)
|
||||||
err = close(filedes);
|
err = close(filedes);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error closing file: %s\n",strerror(errno));
|
fprint_err("### Error closing file: %s\n",strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -456,21 +453,21 @@ extern int open_input_as_ES(char *name,
|
||||||
{
|
{
|
||||||
if (use_stdin)
|
if (use_stdin)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Cannot use standard input to read PES\n");
|
print_err("### Cannot use standard input to read PES\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = open_PES_reader(name,!quiet,!quiet,&reader);
|
err = open_PES_reader(name,!quiet,!quiet,&reader);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error trying to build PES reader for input"
|
fprint_err("### Error trying to build PES reader for input"
|
||||||
" file %s\n",name);
|
" file %s\n",name);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
err = build_elementary_stream_PES(reader,es);
|
err = build_elementary_stream_PES(reader,es);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error trying to build ES reader from PES reader\n"
|
fprint_err("### Error trying to build ES reader from PES reader\n"
|
||||||
" for input file %s\n",name);
|
" for input file %s\n",name);
|
||||||
(void) close_PES_reader(&reader);
|
(void) close_PES_reader(&reader);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -510,7 +507,7 @@ extern int open_input_as_ES(char *name,
|
||||||
err = decide_ES_video_type(*es,FALSE,FALSE,&video_type);
|
err = decide_ES_video_type(*es,FALSE,FALSE,&video_type);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error deciding on stream type for file %s\n",name);
|
fprint_err("### Error deciding on stream type for file %s\n",name);
|
||||||
close_elementary_stream(es);
|
close_elementary_stream(es);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -548,7 +545,7 @@ extern int close_input_as_ES(char *name,
|
||||||
int err = close_PES_reader(&(*es)->reader);
|
int err = close_PES_reader(&(*es)->reader);
|
||||||
if (err)
|
if (err)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error closing PES reader for file %s\n",name);
|
fprint_err("### Error closing PES reader for file %s\n",name);
|
||||||
close_elementary_stream(es);
|
close_elementary_stream(es);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -587,31 +584,29 @@ extern int unsigned_value(char *prefix,
|
||||||
val = strtoul(arg,&ptr,base);
|
val = strtoul(arg,&ptr,base);
|
||||||
if (errno)
|
if (errno)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (errno == ERANGE && val == 0)
|
if (errno == ERANGE && val == 0)
|
||||||
fprintf(stderr,"String cannot be converted to (long) unsigned integer in %s %s\n",
|
fprint_err("String cannot be converted to (long) unsigned integer in %s %s\n",
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
else if (errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|
else if (errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|
||||||
fprintf(stderr,"Number is too big (overflows) in %s %s\n",cmd,arg);
|
fprint_err("Number is too big (overflows) in %s %s\n",cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Cannot read number in %s %s (%s)\n",
|
fprint_err("Cannot read number in %s %s (%s)\n",
|
||||||
cmd,arg,strerror(errno));
|
cmd,arg,strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (ptr[0] != '\0')
|
if (ptr[0] != '\0')
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (ptr-arg == 0)
|
if (ptr-arg == 0)
|
||||||
fprintf(stderr,
|
fprint_err("Argument to %s should be a number, in %s %s\n",
|
||||||
"Argument to %s should be a number, in %s %s\n",
|
|
||||||
cmd,cmd,arg);
|
cmd,cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,
|
fprint_err("Unexpected characters ('%s') after the %.*s in %s %s\n",
|
||||||
"Unexpected characters ('%s') after the %.*s in %s %s\n",
|
|
||||||
ptr,
|
ptr,
|
||||||
(int)(ptr-arg),arg,
|
(int)(ptr-arg),arg,
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
|
@ -651,31 +646,29 @@ extern int int_value(char *prefix,
|
||||||
val = strtol(arg,&ptr,base);
|
val = strtol(arg,&ptr,base);
|
||||||
if (errno)
|
if (errno)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (errno == ERANGE && val == 0)
|
if (errno == ERANGE && val == 0)
|
||||||
fprintf(stderr,"String cannot be converted to (long) integer in %s %s\n",
|
fprint_err("String cannot be converted to (long) integer in %s %s\n",
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
else if (errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|
else if (errno == ERANGE && (val == LONG_MAX || val == LONG_MIN))
|
||||||
fprintf(stderr,"Number is too big (overflows) in %s %s\n",cmd,arg);
|
fprint_err("Number is too big (overflows) in %s %s\n",cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Cannot read number in %s %s (%s)\n",
|
fprint_err("Cannot read number in %s %s (%s)\n",
|
||||||
cmd,arg,strerror(errno));
|
cmd,arg,strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (ptr[0] != '\0')
|
if (ptr[0] != '\0')
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (ptr-arg == 0)
|
if (ptr-arg == 0)
|
||||||
fprintf(stderr,
|
fprint_err("Argument to %s should be a number, in %s %s\n",
|
||||||
"Argument to %s should be a number, in %s %s\n",
|
|
||||||
cmd,cmd,arg);
|
cmd,cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,
|
fprint_err("Unexpected characters ('%s') after the %.*s in %s %s\n",
|
||||||
"Unexpected characters ('%s') after the %.*s in %s %s\n",
|
|
||||||
ptr,
|
ptr,
|
||||||
(int)(ptr-arg),arg,
|
(int)(ptr-arg),arg,
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
|
@ -684,20 +677,20 @@ extern int int_value(char *prefix,
|
||||||
|
|
||||||
if (val > INT_MAX || val < INT_MIN)
|
if (val > INT_MAX || val < INT_MIN)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
fprintf(stderr,"Value %ld (in %s %s) is too large (to fit into 'int')\n",
|
fprint_err("Value %ld (in %s %s) is too large (to fit into 'int')\n",
|
||||||
val,cmd,arg);
|
val,cmd,arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (positive && val < 0)
|
if (positive && val < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
fprintf(stderr,"Value %ld (in %s %s) is less than zero\n",
|
fprint_err("Value %ld (in %s %s) is less than zero\n",
|
||||||
val,cmd,arg);
|
val,cmd,arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -737,10 +730,10 @@ extern int int_value_in_range(char *prefix,
|
||||||
|
|
||||||
if (temp > maximum || temp < minimum)
|
if (temp > maximum || temp < minimum)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
fprintf(stderr,"Value %d (in %s %s) is not in range %d..%d (0x%x..0x%x)\n",
|
fprint_err("Value %d (in %s %s) is not in range %d..%d (0x%x..0x%x)\n",
|
||||||
temp,cmd,arg,minimum,maximum,minimum,maximum);
|
temp,cmd,arg,minimum,maximum,minimum,maximum);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -774,26 +767,25 @@ extern int double_value(char *prefix,
|
||||||
val = strtod(arg,&ptr);
|
val = strtod(arg,&ptr);
|
||||||
if (errno)
|
if (errno)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (errno == ERANGE && val == 0)
|
if (errno == ERANGE && val == 0)
|
||||||
fprintf(stderr,"String cannot be converted to (double) float in %s %s\n",
|
fprint_err("String cannot be converted to (double) float in %s %s\n",
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
else if (errno == ERANGE && (val == HUGE_VAL || val == -HUGE_VAL))
|
else if (errno == ERANGE && (val == HUGE_VAL || val == -HUGE_VAL))
|
||||||
fprintf(stderr,"Number is too big (overflows) in %s %s\n",cmd,arg);
|
fprint_err("Number is too big (overflows) in %s %s\n",cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Cannot read number in %s %s (%s)\n",
|
fprint_err("Cannot read number in %s %s (%s)\n",
|
||||||
cmd,arg,strerror(errno));
|
cmd,arg,strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (ptr[0] != '\0')
|
if (ptr[0] != '\0')
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
fprintf(stderr,
|
fprint_err("Unexpected characters ('%s') after the %.*s in %s %s\n",
|
||||||
"Unexpected characters ('%s') after the %.*s in %s %s\n",
|
|
||||||
ptr,
|
ptr,
|
||||||
(int)(ptr-arg),arg,
|
(int)(ptr-arg),arg,
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
|
@ -802,10 +794,10 @@ extern int double_value(char *prefix,
|
||||||
|
|
||||||
if (positive && val < 0)
|
if (positive && val < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
fprintf(stderr,"Value %f (in %s %s) is less than zero\n",
|
fprint_err("Value %f (in %s %s) is less than zero\n",
|
||||||
val,cmd,arg);
|
val,cmd,arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -855,41 +847,40 @@ extern int host_value(char *prefix,
|
||||||
if (errno)
|
if (errno)
|
||||||
{
|
{
|
||||||
p[0] = ':';
|
p[0] = ':';
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (cmd)
|
if (cmd)
|
||||||
fprintf(stderr,"Cannot read port number in %s %s (%s)\n",
|
fprint_err("Cannot read port number in %s %s (%s)\n",
|
||||||
cmd,arg,strerror(errno));
|
cmd,arg,strerror(errno));
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Cannot read port number in %s (%s)\n",
|
fprint_err("Cannot read port number in %s (%s)\n",
|
||||||
arg,strerror(errno));
|
arg,strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (ptr[0] != '\0')
|
if (ptr[0] != '\0')
|
||||||
{
|
{
|
||||||
p[0] = ':';
|
p[0] = ':';
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (cmd)
|
if (cmd)
|
||||||
fprintf(stderr,"Unexpected characters in port number in %s %s\n",
|
fprint_err("Unexpected characters in port number in %s %s\n",
|
||||||
cmd,arg);
|
cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Unexpected characters in port number in %s\n",
|
fprint_err("Unexpected characters in port number in %s\n",arg);
|
||||||
arg);
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (*port < 0)
|
if (*port < 0)
|
||||||
{
|
{
|
||||||
p[0] = ':';
|
p[0] = ':';
|
||||||
fprintf(stderr,"### ");
|
print_err("### ");
|
||||||
if (prefix != NULL)
|
if (prefix != NULL)
|
||||||
fprintf(stderr,"%s: ",prefix);
|
fprint_err("%s: ",prefix);
|
||||||
if (cmd)
|
if (cmd)
|
||||||
fprintf(stderr,"Negative port number in %s %s\n",cmd,arg);
|
fprint_err("Negative port number in %s %s\n",cmd,arg);
|
||||||
else
|
else
|
||||||
fprintf(stderr,"Negative port number in %s\n",arg);
|
fprint_err("Negative port number in %s\n",arg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -923,7 +914,7 @@ extern int winsock_startup(void)
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
// We could not find a usable WinSock DLL
|
// We could not find a usable WinSock DLL
|
||||||
fprintf(stderr,"### Unable to find a usable WinSock DLL\n");
|
print_err("### Unable to find a usable WinSock DLL\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -933,7 +924,7 @@ extern int winsock_startup(void)
|
||||||
// requested.
|
// requested.
|
||||||
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2 )
|
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### WinSock DLL was version %d.%d, not 2.2 or more\n",
|
fprint_err("### WinSock DLL was version %d.%d, not 2.2 or more\n",
|
||||||
LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
|
LOBYTE(wsaData.wVersion),HIBYTE(wsaData.wVersion));
|
||||||
WSACleanup();
|
WSACleanup();
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -949,211 +940,211 @@ extern void print_winsock_err(int err)
|
||||||
switch (err)
|
switch (err)
|
||||||
{
|
{
|
||||||
case WSABASEERR:
|
case WSABASEERR:
|
||||||
fprintf(stderr,"(WSABASEERR) No Error");
|
print_err("(WSABASEERR) No Error");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEINTR:
|
case WSAEINTR:
|
||||||
fprintf(stderr,"(WSAEINTR) Interrupted system call");
|
print_err("(WSAEINTR) Interrupted system call");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEBADF:
|
case WSAEBADF:
|
||||||
fprintf(stderr,"(WSAEBADF) Bad file number");
|
print_err("(WSAEBADF) Bad file number");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEACCES:
|
case WSAEACCES:
|
||||||
fprintf(stderr,"(WSAEACCES) Permission denied");
|
print_err("(WSAEACCES) Permission denied");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEFAULT:
|
case WSAEFAULT:
|
||||||
fprintf(stderr,"(WSAEFAULT) Bad address");
|
print_err("(WSAEFAULT) Bad address");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEINVAL:
|
case WSAEINVAL:
|
||||||
fprintf(stderr,"(WSAEINVAL) Invalid argument");
|
print_err("(WSAEINVAL) Invalid argument");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEMFILE:
|
case WSAEMFILE:
|
||||||
fprintf(stderr,"(WSAEMFILE) Too many open files");
|
print_err("(WSAEMFILE) Too many open files");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEWOULDBLOCK:
|
case WSAEWOULDBLOCK:
|
||||||
fprintf(stderr,"(WSAEWOULDBLOCK) Operation would block");
|
print_err("(WSAEWOULDBLOCK) Operation would block");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEINPROGRESS:
|
case WSAEINPROGRESS:
|
||||||
fprintf(stderr,"(WSAEINPROGRESS) A transaction is still in progress");
|
print_err("(WSAEINPROGRESS) A transaction is still in progress");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEALREADY:
|
case WSAEALREADY:
|
||||||
fprintf(stderr,"(WSAEALREADY) Operation already in progress");
|
print_err("(WSAEALREADY) Operation already in progress");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENOTSOCK:
|
case WSAENOTSOCK:
|
||||||
fprintf(stderr,"(WSAENOTSOCK) Socket operation on non-socket");
|
print_err("(WSAENOTSOCK) Socket operation on non-socket");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEDESTADDRREQ:
|
case WSAEDESTADDRREQ:
|
||||||
fprintf(stderr,"(WSAEDESTADDRREQ) Destination address required");
|
print_err("(WSAEDESTADDRREQ) Destination address required");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEMSGSIZE:
|
case WSAEMSGSIZE:
|
||||||
fprintf(stderr,"(WSAEMSGSIZE) Message too long");
|
print_err("(WSAEMSGSIZE) Message too long");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEPROTOTYPE:
|
case WSAEPROTOTYPE:
|
||||||
fprintf(stderr,"(WSAEPROTOTYPE) Protocol wrong type for socket");
|
print_err("(WSAEPROTOTYPE) Protocol wrong type for socket");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENOPROTOOPT:
|
case WSAENOPROTOOPT:
|
||||||
fprintf(stderr,"(WSAENOPROTOOPT) Bad protocol option");
|
print_err("(WSAENOPROTOOPT) Bad protocol option");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEPROTONOSUPPORT:
|
case WSAEPROTONOSUPPORT:
|
||||||
fprintf(stderr,"(WSAEPROTONOSUPPORT) Protocol not supported");
|
print_err("(WSAEPROTONOSUPPORT) Protocol not supported");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAESOCKTNOSUPPORT:
|
case WSAESOCKTNOSUPPORT:
|
||||||
fprintf(stderr,"(WSAESOCKTNOSUPPORT) Socket type not supported");
|
print_err("(WSAESOCKTNOSUPPORT) Socket type not supported");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEOPNOTSUPP:
|
case WSAEOPNOTSUPP:
|
||||||
fprintf(stderr,"(WSAEOPNOTSUPP) Operation not supported on socket");
|
print_err("(WSAEOPNOTSUPP) Operation not supported on socket");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEPFNOSUPPORT:
|
case WSAEPFNOSUPPORT:
|
||||||
fprintf(stderr,"(WSAEPFNOSUPPORT) Protocol family not supported");
|
print_err("(WSAEPFNOSUPPORT) Protocol family not supported");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEAFNOSUPPORT:
|
case WSAEAFNOSUPPORT:
|
||||||
fprintf(stderr,"(WSAEAFNOSUPPORT) Address family not supported by protocol family");
|
print_err("(WSAEAFNOSUPPORT) Address family not supported by protocol family");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEADDRINUSE:
|
case WSAEADDRINUSE:
|
||||||
fprintf(stderr,"(WSAEADDRINUSE) Address already in use");
|
print_err("(WSAEADDRINUSE) Address already in use");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEADDRNOTAVAIL:
|
case WSAEADDRNOTAVAIL:
|
||||||
fprintf(stderr,"(WSAEADDRNOTAVAIL) Can't assign requested address");
|
print_err("(WSAEADDRNOTAVAIL) Can't assign requested address");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENETDOWN:
|
case WSAENETDOWN:
|
||||||
fprintf(stderr,"(WSAENETDOWN) Network is down");
|
print_err("(WSAENETDOWN) Network is down");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENETUNREACH:
|
case WSAENETUNREACH:
|
||||||
fprintf(stderr,"(WSAENETUNREACH) Network is unreachable");
|
print_err("(WSAENETUNREACH) Network is unreachable");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENETRESET:
|
case WSAENETRESET:
|
||||||
fprintf(stderr,"(WSAENETRESET) Net dropped connection or reset");
|
print_err("(WSAENETRESET) Net dropped connection or reset");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAECONNABORTED:
|
case WSAECONNABORTED:
|
||||||
fprintf(stderr,"(WSAECONNABORTED) Software caused connection abort");
|
print_err("(WSAECONNABORTED) Software caused connection abort");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAECONNRESET:
|
case WSAECONNRESET:
|
||||||
fprintf(stderr,"(WSAECONNRESET) Connection reset by peer");
|
print_err("(WSAECONNRESET) Connection reset by peer");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENOBUFS:
|
case WSAENOBUFS:
|
||||||
fprintf(stderr,"(WSAENOBUFS) No buffer space available");
|
print_err("(WSAENOBUFS) No buffer space available");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEISCONN:
|
case WSAEISCONN:
|
||||||
fprintf(stderr,"(WSAEISCONN) Socket is already connected");
|
print_err("(WSAEISCONN) Socket is already connected");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENOTCONN:
|
case WSAENOTCONN:
|
||||||
fprintf(stderr,"(WSAENOTCONN) Socket is not connected");
|
print_err("(WSAENOTCONN) Socket is not connected");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAESHUTDOWN:
|
case WSAESHUTDOWN:
|
||||||
fprintf(stderr,"(WSAESHUTDOWN) Can't send after socket shutdown");
|
print_err("(WSAESHUTDOWN) Can't send after socket shutdown");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAETOOMANYREFS:
|
case WSAETOOMANYREFS:
|
||||||
fprintf(stderr,"(WSAETOOMANYREFS) Too many references, can't splice");
|
print_err("(WSAETOOMANYREFS) Too many references, can't splice");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAETIMEDOUT:
|
case WSAETIMEDOUT:
|
||||||
fprintf(stderr,"(WSAETIMEDOUT) Connection timed out");
|
print_err("(WSAETIMEDOUT) Connection timed out");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAECONNREFUSED:
|
case WSAECONNREFUSED:
|
||||||
fprintf(stderr,"(WSAECONNREFUSED) Connection refused");
|
print_err("(WSAECONNREFUSED) Connection refused");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAELOOP:
|
case WSAELOOP:
|
||||||
fprintf(stderr,"(WSAELOOP) Too many levels of symbolic links");
|
print_err("(WSAELOOP) Too many levels of symbolic links");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENAMETOOLONG:
|
case WSAENAMETOOLONG:
|
||||||
fprintf(stderr,"(WSAENAMETOOLONG) File name too long");
|
print_err("(WSAENAMETOOLONG) File name too long");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEHOSTDOWN:
|
case WSAEHOSTDOWN:
|
||||||
fprintf(stderr,"(WSAEHOSTDOWN) Host is down");
|
print_err("(WSAEHOSTDOWN) Host is down");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEHOSTUNREACH:
|
case WSAEHOSTUNREACH:
|
||||||
fprintf(stderr,"(WSAEHOSTUNREACH) No Route to Host");
|
print_err("(WSAEHOSTUNREACH) No Route to Host");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAENOTEMPTY:
|
case WSAENOTEMPTY:
|
||||||
fprintf(stderr,"(WSAENOTEMPTY) Directory not empty");
|
print_err("(WSAENOTEMPTY) Directory not empty");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEPROCLIM:
|
case WSAEPROCLIM:
|
||||||
fprintf(stderr,"(WSAEPROCLIM) Too many processes");
|
print_err("(WSAEPROCLIM) Too many processes");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEUSERS:
|
case WSAEUSERS:
|
||||||
fprintf(stderr,"(WSAEUSERS) Too many users");
|
print_err("(WSAEUSERS) Too many users");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEDQUOT:
|
case WSAEDQUOT:
|
||||||
fprintf(stderr,"(WSAEDQUOT) Disc Quota Exceeded");
|
print_err("(WSAEDQUOT) Disc Quota Exceeded");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAESTALE:
|
case WSAESTALE:
|
||||||
fprintf(stderr,"(WSAESTALE) Stale NFS file handle");
|
print_err("(WSAESTALE) Stale NFS file handle");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSASYSNOTREADY:
|
case WSASYSNOTREADY:
|
||||||
fprintf(stderr,"(WSASYSNOTREADY) Network SubSystem is unavailable");
|
print_err("(WSASYSNOTREADY) Network SubSystem is unavailable");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAVERNOTSUPPORTED:
|
case WSAVERNOTSUPPORTED:
|
||||||
fprintf(stderr,"(WSAVERNOTSUPPORTED) WINSOCK DLL Version out of range");
|
print_err("(WSAVERNOTSUPPORTED) WINSOCK DLL Version out of range");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSANOTINITIALISED:
|
case WSANOTINITIALISED:
|
||||||
fprintf(stderr,"(WSANOTINITIALISED) Successful WSASTARTUP not yet performed");
|
print_err("(WSANOTINITIALISED) Successful WSASTARTUP not yet performed");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAEREMOTE:
|
case WSAEREMOTE:
|
||||||
fprintf(stderr,"(WSAEREMOTE) Too many levels of remote in path");
|
print_err("(WSAEREMOTE) Too many levels of remote in path");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSAHOST_NOT_FOUND:
|
case WSAHOST_NOT_FOUND:
|
||||||
fprintf(stderr,"(WSAHOST_NOT_FOUND) Host not found");
|
print_err("(WSAHOST_NOT_FOUND) Host not found");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSATRY_AGAIN:
|
case WSATRY_AGAIN:
|
||||||
fprintf(stderr,"(WSATRY_AGAIN) Non-Authoritative Host not found");
|
print_err("(WSATRY_AGAIN) Non-Authoritative Host not found");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSANO_RECOVERY:
|
case WSANO_RECOVERY:
|
||||||
fprintf(stderr,"(WSANO_RECOVERY) Non-Recoverable errors: FORMERR, REFUSED, NOTIMP");
|
print_err("(WSANO_RECOVERY) Non-Recoverable errors: FORMERR, REFUSED, NOTIMP");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WSANO_DATA:
|
case WSANO_DATA:
|
||||||
fprintf(stderr,"(WSANO_DATA) Valid name, no data record of requested type");
|
print_err("(WSANO_DATA) Valid name, no data record of requested type");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr,"winsock error %d",err);
|
fprint_err("winsock error %d",err);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1169,9 +1160,9 @@ static int winsock_cleanup(void)
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Error cleaning up WinSock: ");
|
print_err("### Error cleaning up WinSock: ");
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1228,15 +1219,15 @@ extern int connect_socket(char *hostname,
|
||||||
if (output == INVALID_SOCKET)
|
if (output == INVALID_SOCKET)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Unable to create socket: ");
|
print_err("### Unable to create socket: ");
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else // _WIN32
|
#else // _WIN32
|
||||||
if (output == -1)
|
if (output == -1)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Unable to create socket: %s\n",strerror(errno));
|
fprint_err("### Unable to create socket: %s\n",strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#endif // _WIN32
|
#endif // _WIN32
|
||||||
|
@ -1258,9 +1249,9 @@ extern int connect_socket(char *hostname,
|
||||||
if (hp == NULL)
|
if (hp == NULL)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Unable to resolve host %s: ",hostname);
|
fprint_err("### Unable to resolve host %s: ",hostname);
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
memcpy(&ipaddr.sin_addr.s_addr, hp->h_addr, hp->h_length);
|
memcpy(&ipaddr.sin_addr.s_addr, hp->h_addr, hp->h_length);
|
||||||
|
@ -1272,7 +1263,7 @@ extern int connect_socket(char *hostname,
|
||||||
hp = gethostbyname(hostname);
|
hp = gethostbyname(hostname);
|
||||||
if (hp == NULL)
|
if (hp == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Unable to resolve host %s: %s\n",
|
fprint_err("### Unable to resolve host %s: %s\n",
|
||||||
hostname,hstrerror(h_errno));
|
hostname,hstrerror(h_errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1295,16 +1286,15 @@ extern int connect_socket(char *hostname,
|
||||||
if (result == SOCKET_ERROR)
|
if (result == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Error setting socket for IP_MULTICAST_TTL: ");
|
print_err("### Error setting socket for IP_MULTICAST_TTL: ");
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else // _WIN32
|
#else // _WIN32
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,
|
fprint_err("### Error setting socket for IP_MULTICAST_TTL: %s\n",
|
||||||
"### Error setting socket for IP_MULTICAST_TTL: %s\n",
|
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1314,17 +1304,17 @@ extern int connect_socket(char *hostname,
|
||||||
{
|
{
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
fprintf(stderr,"!!! Specifying the multicast interface is not supported on "
|
print_err("!!! Specifying the multicast interface is not supported on "
|
||||||
"some versions of Windows\n");
|
"some versions of Windows\n");
|
||||||
// Also, choosing an invalid address is not (may not be) detected on Windows
|
// Also, choosing an invalid address is not (may not be) detected on Windows
|
||||||
addr = inet_addr(multicast_ifaddr);
|
addr = inet_addr(multicast_ifaddr);
|
||||||
if (addr == INADDR_NONE)
|
if (addr == INADDR_NONE)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Error translating '%s' as a dotted IP address: ",
|
fprint_err("### Error translating '%s' as a dotted IP address: ",
|
||||||
multicast_ifaddr);
|
multicast_ifaddr);
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else // _WIN32
|
#else // _WIN32
|
||||||
|
@ -1337,15 +1327,15 @@ extern int connect_socket(char *hostname,
|
||||||
if (result == SOCKET_ERROR)
|
if (result == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Unable to set multicast interface %s: ");
|
fprint_err("### Unable to set multicast interface %s: ");
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else // _WIN32
|
#else // _WIN32
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Unable to set multicast interface %s: %s\n",
|
fprint_err("### Unable to set multicast interface %s: %s\n",
|
||||||
multicast_ifaddr,strerror(errno));
|
multicast_ifaddr,strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1358,15 +1348,15 @@ extern int connect_socket(char *hostname,
|
||||||
if (result == SOCKET_ERROR)
|
if (result == SOCKET_ERROR)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Unable to connect to host %s: ",hostname);
|
fprint_err("### Unable to connect to host %s: ",hostname);
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
#else // _WIN32
|
#else // _WIN32
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Unable to connect to host %s: %s\n",
|
fprint_err("### Unable to connect to host %s: %s\n",
|
||||||
hostname,strerror(errno));
|
hostname,strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -1386,9 +1376,9 @@ extern int disconnect_socket(SOCKET socket)
|
||||||
if (err != 0)
|
if (err != 0)
|
||||||
{
|
{
|
||||||
err = WSAGetLastError();
|
err = WSAGetLastError();
|
||||||
fprintf(stderr,"### Error closing output: ");
|
print_err("### Error closing output: ");
|
||||||
print_winsock_err(err);
|
print_winsock_err(err);
|
||||||
fprintf(stderr,"\n");
|
print_err("\n");
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1402,7 +1392,7 @@ extern int disconnect_socket(int socket)
|
||||||
int err = close(socket);
|
int err = close(socket);
|
||||||
if (err == EOF)
|
if (err == EOF)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Error closing output: %s\n",strerror(errno));
|
fprint_err("### Error closing output: %s\n",strerror(errno));
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
13
misc_fns.h
13
misc_fns.h
|
@ -53,16 +53,15 @@
|
||||||
extern uint32_t crc32_block(uint32_t crc, byte *pData, int blk_len);
|
extern uint32_t crc32_block(uint32_t crc, byte *pData, int blk_len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out the bottom N bits from a byte on the given stream
|
* Print out the bottom N bits from a byte
|
||||||
*/
|
*/
|
||||||
extern void print_bits(FILE *stream,
|
extern void print_bits(int num_bits,
|
||||||
int num_bits,
|
|
||||||
byte value);
|
byte value);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print out (the first `max`) bytes of a byte array.
|
* Print out (the first `max`) bytes of a byte array.
|
||||||
*
|
*
|
||||||
* - `stream` is the stream to print on.
|
* - if `is_msg` then print as a message, otherwise as an error
|
||||||
* - `name` is identifying text to start the report with.
|
* - `name` is identifying text to start the report with.
|
||||||
* - `data` is the byte data to print. This may be NULL.
|
* - `data` is the byte data to print. This may be NULL.
|
||||||
* - `length` is its length
|
* - `length` is its length
|
||||||
|
@ -75,7 +74,7 @@ extern void print_bits(FILE *stream,
|
||||||
* where no more than `max` bytes are to be printed (and "..." is printed
|
* where no more than `max` bytes are to be printed (and "..." is printed
|
||||||
* if not all bytes were shown).
|
* if not all bytes were shown).
|
||||||
*/
|
*/
|
||||||
extern void print_data(FILE *stream,
|
extern void print_data(int is_msg,
|
||||||
char *name,
|
char *name,
|
||||||
byte data[],
|
byte data[],
|
||||||
int length,
|
int length,
|
||||||
|
@ -83,7 +82,6 @@ extern void print_data(FILE *stream,
|
||||||
/*
|
/*
|
||||||
* Print out (the last `max`) bytes of a byte array.
|
* Print out (the last `max`) bytes of a byte array.
|
||||||
*
|
*
|
||||||
* - `stream` is the stream to print on.
|
|
||||||
* - `name` is identifying text to start the report with.
|
* - `name` is identifying text to start the report with.
|
||||||
* - `data` is the byte data to print. This may be NULL.
|
* - `data` is the byte data to print. This may be NULL.
|
||||||
* - `length` is its length
|
* - `length` is its length
|
||||||
|
@ -96,8 +94,7 @@ extern void print_data(FILE *stream,
|
||||||
* where no more than `max` bytes are to be printed (and "..." is printed
|
* where no more than `max` bytes are to be printed (and "..." is printed
|
||||||
* if not all bytes were shown).
|
* if not all bytes were shown).
|
||||||
*/
|
*/
|
||||||
extern void print_end_of_data(FILE *stream,
|
extern void print_end_of_data(char *name,
|
||||||
char *name,
|
|
||||||
byte data[],
|
byte data[],
|
||||||
int length,
|
int length,
|
||||||
int max);
|
int max);
|
||||||
|
|
|
@ -714,7 +714,7 @@ static int read_seq_param_set_data(nal_unit_p nal,
|
||||||
" parameter set NAL unit at " OFFSET_T_FORMAT "/%d\n",
|
" parameter set NAL unit at " OFFSET_T_FORMAT "/%d\n",
|
||||||
reserved_zero_5bits,
|
reserved_zero_5bits,
|
||||||
nal->unit.start_posn.infile,nal->unit.start_posn.inpacket);
|
nal->unit.start_posn.infile,nal->unit.start_posn.inpacket);
|
||||||
print_data(stderr," Data",nal->bit_data->data,nal->bit_data->data_len,
|
print_data(FALSE," Data",nal->bit_data->data,nal->bit_data->data_len,
|
||||||
20);
|
20);
|
||||||
// Should we carry on or give up? On the whole, if this is broken
|
// Should we carry on or give up? On the whole, if this is broken
|
||||||
// we can't really trust the rest of its data...
|
// we can't really trust the rest of its data...
|
||||||
|
|
|
@ -694,8 +694,7 @@ int main(int argc, char **argv)
|
||||||
dump_out:
|
dump_out:
|
||||||
if (ctx.dump_data || (ctx.dump_extra && !sent_to_output))
|
if (ctx.dump_data || (ctx.dump_extra && !sent_to_output))
|
||||||
{
|
{
|
||||||
print_data(stdout, "data",
|
print_data(TRUE, "data", data, len, len);
|
||||||
data, len, len);
|
|
||||||
}
|
}
|
||||||
free(allocated); allocated = data = NULL;
|
free(allocated); allocated = data = NULL;
|
||||||
}
|
}
|
||||||
|
|
22
pes.c
22
pes.c
|
@ -1079,7 +1079,7 @@ static int start_new_PES_packet(PES_reader_p reader,
|
||||||
#if DEBUG_PES_ASSEMBLY
|
#if DEBUG_PES_ASSEMBLY
|
||||||
printf(": start new %s PES packet, payload_len = %d\n",
|
printf(": start new %s PES packet, payload_len = %d\n",
|
||||||
(pid==reader->video_pid?"video":"audio"),payload_len);
|
(pid==reader->video_pid?"video":"audio"),payload_len);
|
||||||
print_data(stdout,"Data",payload,payload_len,payload_len);
|
print_data(TRUE,"Data",payload,payload_len,payload_len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (payload_len < 6)
|
if (payload_len < 6)
|
||||||
|
@ -1168,7 +1168,7 @@ static int start_new_PES_packet(PES_reader_p reader,
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
int from = payload_len - extra;
|
int from = payload_len - extra;
|
||||||
print_data(stderr," End of data",payload+from,extra,extra);
|
print_data(FALSE," End of data",payload+from,extra,extra);
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr," In %s PES packet, PID %x, starting at "
|
fprintf(stderr," In %s PES packet, PID %x, starting at "
|
||||||
OFFSET_T_FORMAT "\n",(pid==reader->video_pid?"video":"audio"),
|
OFFSET_T_FORMAT "\n",(pid==reader->video_pid?"video":"audio"),
|
||||||
|
@ -1264,7 +1264,7 @@ static int continue_PES_packet(PES_reader_p reader,
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
int from = payload_len - extra;
|
int from = payload_len - extra;
|
||||||
print_data(stderr," End of data",payload+from,extra,extra);
|
print_data(FALSE," End of data",payload+from,extra,extra);
|
||||||
#endif
|
#endif
|
||||||
fprintf(stderr," In %s PES packet, PID %x, starting at "
|
fprintf(stderr," In %s PES packet, PID %x, starting at "
|
||||||
OFFSET_T_FORMAT "\n",(pid==reader->video_pid?"video":"audio"),
|
OFFSET_T_FORMAT "\n",(pid==reader->video_pid?"video":"audio"),
|
||||||
|
@ -1525,7 +1525,7 @@ static int read_next_PES_packet_from_TS(PES_reader_p reader,
|
||||||
" with TS packet at " OFFSET_T_FORMAT "\n",
|
" with TS packet at " OFFSET_T_FORMAT "\n",
|
||||||
(payload_unit_start_indicator?"starting":"continuing"),
|
(payload_unit_start_indicator?"starting":"continuing"),
|
||||||
pid,reader->posn);
|
pid,reader->posn);
|
||||||
print_data(stderr," Data",payload,payload_len,20);
|
print_data(FALSE," Data",payload,payload_len,20);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if (finished)
|
if (finished)
|
||||||
|
@ -2538,12 +2538,12 @@ static inline void setup_PES_as_ES(PES_packet_data_p packet)
|
||||||
packet->es_data = packet->data + offset;
|
packet->es_data = packet->data + offset;
|
||||||
packet->es_data_len = packet->data_len - offset;
|
packet->es_data_len = packet->data_len - offset;
|
||||||
#if 0 // XXX
|
#if 0 // XXX
|
||||||
print_data(stdout," ",packet->es_data,packet->es_data_len,20);
|
print_data(TRUE," ",packet->es_data,packet->es_data_len,20);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
if (reader->give_info)
|
if (reader->give_info)
|
||||||
print_data(stdout,".. ES data",packet->es_data,packet->es_data_len,20);
|
print_data(TRUE,".. ES data",packet->es_data,packet->es_data_len,20);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@ -2854,7 +2854,7 @@ extern int report_PES_data_array(char *prefix,
|
||||||
case STREAM_ID_DSMCC_STREAM:
|
case STREAM_ID_DSMCC_STREAM:
|
||||||
case STREAM_ID_H222_E_STREAM:
|
case STREAM_ID_H222_E_STREAM:
|
||||||
printf("\n Just data bytes\n");
|
printf("\n Just data bytes\n");
|
||||||
print_data(stdout," ",bytes,packet_length,20);
|
print_data(TRUE," ",bytes,packet_length,20);
|
||||||
return 0; // Just data bytes
|
return 0; // Just data bytes
|
||||||
case STREAM_ID_PADDING_STREAM:
|
case STREAM_ID_PADDING_STREAM:
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
@ -2944,7 +2944,7 @@ extern int report_PES_data_array(char *prefix,
|
||||||
bytes += 3 + PES_header_data_length;
|
bytes += 3 + PES_header_data_length;
|
||||||
if (prefix && strlen(prefix) > 0)
|
if (prefix && strlen(prefix) > 0)
|
||||||
printf("%s",prefix);
|
printf("%s",prefix);
|
||||||
print_data(stdout," ",bytes,packet_length-3-PES_header_data_length,20);
|
print_data(TRUE," ",bytes,packet_length-3-PES_header_data_length,20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3001,7 +3001,7 @@ extern int report_PES_data_array(char *prefix,
|
||||||
bytes += posn;
|
bytes += posn;
|
||||||
if (prefix && strlen(prefix) > 0)
|
if (prefix && strlen(prefix) > 0)
|
||||||
printf("%s",prefix);
|
printf("%s",prefix);
|
||||||
print_data(stdout," ",bytes,packet_length-posn,20);
|
print_data(TRUE," ",bytes,packet_length-posn,20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3074,7 +3074,7 @@ extern void report_PES_data_array2(int stream_type,
|
||||||
case STREAM_ID_DSMCC_STREAM:
|
case STREAM_ID_DSMCC_STREAM:
|
||||||
case STREAM_ID_H222_E_STREAM:
|
case STREAM_ID_H222_E_STREAM:
|
||||||
printf(" Just data bytes\n");
|
printf(" Just data bytes\n");
|
||||||
print_data(stdout," Data",payload+6,payload_len-6,1000);
|
print_data(TRUE," Data",payload+6,payload_len-6,1000);
|
||||||
return; // Just data bytes
|
return; // Just data bytes
|
||||||
case STREAM_ID_PADDING_STREAM:
|
case STREAM_ID_PADDING_STREAM:
|
||||||
printf(" Padding stream\n");
|
printf(" Padding stream\n");
|
||||||
|
@ -3217,7 +3217,7 @@ extern void report_PES_data_array2(int stream_type,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (show_data_len)
|
if (show_data_len)
|
||||||
print_data(stdout," Data",data,data_len,show_data_len);
|
print_data(TRUE," Data",data,data_len,show_data_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
4
pidint.c
4
pidint.c
|
@ -734,7 +734,7 @@ extern void report_pmt(FILE *stream,
|
||||||
if (pmt->program_info_length > 0)
|
if (pmt->program_info_length > 0)
|
||||||
{
|
{
|
||||||
if (prefix!=NULL) fprintf(stream,prefix);
|
if (prefix!=NULL) fprintf(stream,prefix);
|
||||||
print_data(stream," Program info",pmt->program_info,
|
print_data(stream==stdout," Program info",pmt->program_info,
|
||||||
pmt->program_info_length,pmt->program_info_length);
|
pmt->program_info_length,pmt->program_info_length);
|
||||||
print_descriptors(stream,prefix," ",pmt->program_info,
|
print_descriptors(stream,prefix," ",pmt->program_info,
|
||||||
pmt->program_info_length);
|
pmt->program_info_length);
|
||||||
|
@ -756,7 +756,7 @@ extern void report_pmt(FILE *stream,
|
||||||
if (pmt->streams[ii].ES_info_length > 0)
|
if (pmt->streams[ii].ES_info_length > 0)
|
||||||
{
|
{
|
||||||
if (prefix!=NULL) fprintf(stream,prefix);
|
if (prefix!=NULL) fprintf(stream,prefix);
|
||||||
print_data(stream," ES info",
|
print_data(stream==stdout," ES info",
|
||||||
pmt->streams[ii].ES_info,
|
pmt->streams[ii].ES_info,
|
||||||
pmt->streams[ii].ES_info_length,
|
pmt->streams[ii].ES_info_length,
|
||||||
pmt->streams[ii].ES_info_length);
|
pmt->streams[ii].ES_info_length);
|
||||||
|
|
4
ps.c
4
ps.c
|
@ -746,7 +746,7 @@ extern int read_PS_pack_header_body(PS_reader_p ps,
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
printf("ISO/IEC 11171-1/MPEG-1 pack header\n");
|
printf("ISO/IEC 11171-1/MPEG-1 pack header\n");
|
||||||
print_data(stdout,"Pack header",hdr->data,8,8);
|
print_data(TRUE,"Pack header",hdr->data,8,8);
|
||||||
#endif
|
#endif
|
||||||
hdr->pack_stuffing_length = 0; // since it doesn't exist
|
hdr->pack_stuffing_length = 0; // since it doesn't exist
|
||||||
hdr->scr =
|
hdr->scr =
|
||||||
|
@ -784,7 +784,7 @@ extern int read_PS_pack_header_body(PS_reader_p ps,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
print_data(stdout,"Pack header",hdr->data,10,10);
|
print_data(TRUE,"Pack header",hdr->data,10,10);
|
||||||
#endif
|
#endif
|
||||||
hdr->scr_base =
|
hdr->scr_base =
|
||||||
(((uint64_t)(hdr->data[0] & 0x38)) << 27) |
|
(((uint64_t)(hdr->data[0] & 0x38)) << 27) |
|
||||||
|
|
|
@ -251,10 +251,10 @@ static int report_ps(PS_reader_p ps,
|
||||||
posn,count,stream_id);
|
posn,count,stream_id);
|
||||||
print_stream_id(stdout,stream_id);
|
print_stream_id(stdout,stream_id);
|
||||||
printf(")\n");
|
printf(")\n");
|
||||||
print_data(stdout," Packet",
|
print_data(TRUE," Packet",
|
||||||
packet.data,packet.data_len,20);
|
packet.data,packet.data_len,20);
|
||||||
#if 1 // XXX
|
#if 1 // XXX
|
||||||
print_end_of_data(stdout," ",packet.data,packet.data_len,20);
|
print_end_of_data(" ",packet.data,packet.data_len,20);
|
||||||
#endif
|
#endif
|
||||||
if (IS_AUDIO_STREAM_ID(stream_id) || IS_VIDEO_STREAM_ID(stream_id))
|
if (IS_AUDIO_STREAM_ID(stream_id) || IS_VIDEO_STREAM_ID(stream_id))
|
||||||
#if 1 // XXX
|
#if 1 // XXX
|
||||||
|
|
10
test_pes.c
10
test_pes.c
|
@ -228,7 +228,7 @@ static int test1(PES_reader_p reader,
|
||||||
packet->posn,packet->data[3]);
|
packet->posn,packet->data[3]);
|
||||||
print_stream_id(stdout,packet->data[3]);
|
print_stream_id(stdout,packet->data[3]);
|
||||||
printf(")\n");
|
printf(")\n");
|
||||||
print_data(stdout," Data",packet->data,packet->data_len,20);
|
print_data(TRUE," Data",packet->data,packet->data_len,20);
|
||||||
|
|
||||||
err = report_PES_data_array("",packet->data,packet->data_len,FALSE);
|
err = report_PES_data_array("",packet->data,packet->data_len,FALSE);
|
||||||
if (err) return 1;
|
if (err) return 1;
|
||||||
|
@ -248,7 +248,7 @@ static int test1(PES_reader_p reader,
|
||||||
packet->posn,packet->data[3]);
|
packet->posn,packet->data[3]);
|
||||||
print_stream_id(stdout,packet->data[3]);
|
print_stream_id(stdout,packet->data[3]);
|
||||||
printf(")\n");
|
printf(")\n");
|
||||||
print_data(stdout," Data",packet->data,packet->data_len,20);
|
print_data(TRUE," Data",packet->data,packet->data_len,20);
|
||||||
}
|
}
|
||||||
|
|
||||||
old_data = malloc(packet->data_len);
|
old_data = malloc(packet->data_len);
|
||||||
|
@ -286,7 +286,7 @@ static int test1(PES_reader_p reader,
|
||||||
packet->posn,packet->data[3]);
|
packet->posn,packet->data[3]);
|
||||||
print_stream_id(stdout,packet->data[3]);
|
print_stream_id(stdout,packet->data[3]);
|
||||||
printf(")\n");
|
printf(")\n");
|
||||||
print_data(stdout," Data",packet->data,packet->data_len,20);
|
print_data(TRUE," Data",packet->data,packet->data_len,20);
|
||||||
}
|
}
|
||||||
if (packet->data_len != old_data_len)
|
if (packet->data_len != old_data_len)
|
||||||
{
|
{
|
||||||
|
@ -299,8 +299,8 @@ static int test1(PES_reader_p reader,
|
||||||
else if (memcmp(packet->data,old_data,packet->data_len))
|
else if (memcmp(packet->data,old_data,packet->data_len))
|
||||||
{
|
{
|
||||||
fprintf(stderr,"### Test1: packet data differs\n");
|
fprintf(stderr,"### Test1: packet data differs\n");
|
||||||
print_data(stderr," Packet 1",old_data,old_data_len,50);
|
print_data(FALSE," Packet 1",old_data,old_data_len,50);
|
||||||
print_data(stderr," Packet 2",packet->data,packet->data_len,50);
|
print_data(FALSE," Packet 2",packet->data,packet->data_len,50);
|
||||||
free(old_data);
|
free(old_data);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
50
ts.c
50
ts.c
|
@ -329,7 +329,7 @@ static int write_some_TS_PES_packet(TS_writer_p output,
|
||||||
printf("TS_PES ");
|
printf("TS_PES ");
|
||||||
else
|
else
|
||||||
printf(" ");
|
printf(" ");
|
||||||
print_data(stdout,"",data,data_len,20);
|
print_data(TRUE,"",data,data_len,20);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// We always start with a sync_byte to identify this as a
|
// We always start with a sync_byte to identify this as a
|
||||||
|
@ -638,8 +638,8 @@ extern int write_PES_as_TS_PES_packet(TS_writer_p output,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0 // XXX
|
#if 0 // XXX
|
||||||
print_data(stdout,"TS_PES",data,data_len,20);
|
print_data(TRUE,"TS_PES",data,data_len,20);
|
||||||
print_end_of_data(stdout," ",data,data_len,20);
|
print_end_of_data(" ",data,data_len,20);
|
||||||
#endif // XXX
|
#endif // XXX
|
||||||
|
|
||||||
#if MPEG1_AS_ES
|
#if MPEG1_AS_ES
|
||||||
|
@ -2037,7 +2037,7 @@ extern void report_payload(int show_data,
|
||||||
if (payload_unit_start_indicator)
|
if (payload_unit_start_indicator)
|
||||||
report_PES_data_array2(stream_type,payload,payload_len, show_data?1000:0);
|
report_PES_data_array2(stream_type,payload,payload_len, show_data?1000:0);
|
||||||
else if (show_data)
|
else if (show_data)
|
||||||
print_data(stdout,"Data",payload,payload_len,1000);
|
print_data(TRUE,"Data",payload,payload_len,1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -2082,7 +2082,7 @@ extern int extract_prog_list_from_pat(int verbose,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG) print_data(stdout,"Data",data,data_len,1000);
|
if (DEBUG) print_data(TRUE,"Data",data,data_len,1000);
|
||||||
|
|
||||||
// The table id in a PAT should be 0
|
// The table id in a PAT should be 0
|
||||||
table_id = data[0];
|
table_id = data[0];
|
||||||
|
@ -2158,7 +2158,7 @@ extern int extract_prog_list_from_pat(int verbose,
|
||||||
program_data = data + 8;
|
program_data = data + 8;
|
||||||
program_data_len = data_len - 8 - 4; // The "-4" is for the CRC
|
program_data_len = data_len - 8 - 4; // The "-4" is for the CRC
|
||||||
|
|
||||||
//print_data(stdout,"Rest:",program_data,program_data_len,1000);
|
//print_data(TRUE,"Rest:",program_data,program_data_len,1000);
|
||||||
|
|
||||||
err = build_pidint_list(prog_list);
|
err = build_pidint_list(prog_list);
|
||||||
if (err) return 1;
|
if (err) return 1;
|
||||||
|
@ -2252,7 +2252,7 @@ extern int print_descriptors(FILE *stream,
|
||||||
if (leader1 != NULL) fputs(leader1,stream);
|
if (leader1 != NULL) fputs(leader1,stream);
|
||||||
if (leader2 != NULL) fputs(leader2,stream);
|
if (leader2 != NULL) fputs(leader2,stream);
|
||||||
if (name != NULL)
|
if (name != NULL)
|
||||||
print_data(stream,name,data,this_length,100);
|
print_data(stream==stdout,name,data,this_length,100);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
switch (tag)
|
switch (tag)
|
||||||
|
@ -2282,7 +2282,7 @@ extern int print_descriptors(FILE *stream,
|
||||||
temp_u = ((data[2] & 0x1F) << 8) | data[3];
|
temp_u = ((data[2] & 0x1F) << 8) | data[3];
|
||||||
fprintf(stream,"PID %04x (%d) ",temp_u,temp_u);
|
fprintf(stream,"PID %04x (%d) ",temp_u,temp_u);
|
||||||
if (data_len > 4)
|
if (data_len > 4)
|
||||||
print_data(stream,"data",&data[4],data_len-4,data_len-4);
|
print_data(stream==stdout,"data",&data[4],data_len-4,data_len-4);
|
||||||
else
|
else
|
||||||
fprintf(stream,"\n");
|
fprintf(stream,"\n");
|
||||||
break;
|
break;
|
||||||
|
@ -2377,17 +2377,17 @@ extern int print_descriptors(FILE *stream,
|
||||||
}
|
}
|
||||||
|
|
||||||
case 0x6A:
|
case 0x6A:
|
||||||
print_data(stream,"DVB AC-3",data,this_length,100);
|
print_data(stream==stdout,"DVB AC-3",data,this_length,100);
|
||||||
break;
|
break;
|
||||||
case 0x81:
|
case 0x81:
|
||||||
print_data(stream,"ATSC AC-3",data,this_length,100);
|
print_data(stream==stdout,"ATSC AC-3",data,this_length,100);
|
||||||
default:
|
default:
|
||||||
// Report the tag number as decimal since that is how H.222
|
// Report the tag number as decimal since that is how H.222
|
||||||
// describes it in table 2-39
|
// describes it in table 2-39
|
||||||
{
|
{
|
||||||
char temp_c[50]; // twice as much as I need...
|
char temp_c[50]; // twice as much as I need...
|
||||||
sprintf(temp_c,"Descriptor tag %02x (%3d)",tag,tag);
|
sprintf(temp_c,"Descriptor tag %02x (%3d)",tag,tag);
|
||||||
print_data(stream,temp_c,data,this_length,100);
|
print_data(stream==stdout,temp_c,data,this_length,100);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -2463,16 +2463,16 @@ extern int build_psi_data(int verbose,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (DEBUG) print_data(stdout,"PMT",payload,payload_len,1000);
|
// if (DEBUG) print_data(TRUE,"PMT",payload,payload_len,1000);
|
||||||
packet_data = payload + pointer + 1;
|
packet_data = payload + pointer + 1;
|
||||||
packet_data_len = payload_len - pointer - 1;
|
packet_data_len = payload_len - pointer - 1;
|
||||||
if (DEBUG) print_data(stdout,"Data",packet_data,packet_data_len,1000);
|
if (DEBUG) print_data(TRUE,"Data",packet_data,packet_data_len,1000);
|
||||||
|
|
||||||
section_length = ((packet_data[1] & 0xF) << 8) | packet_data[2];
|
section_length = ((packet_data[1] & 0xF) << 8) | packet_data[2];
|
||||||
|
|
||||||
#if 0 // XXX
|
#if 0 // XXX
|
||||||
printf("===========================================\n");
|
printf("===========================================\n");
|
||||||
print_data(stdout,"build_pmt_data(new)",packet_data,packet_data_len,packet_data_len);
|
print_data(TRUE,"build_pmt_data(new)",packet_data,packet_data_len,packet_data_len);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
*data_len = section_length + 3;
|
*data_len = section_length + 3;
|
||||||
|
@ -2500,11 +2500,11 @@ extern int build_psi_data(int verbose,
|
||||||
int space_left = *data_len - *data_used;
|
int space_left = *data_len - *data_used;
|
||||||
packet_data = payload;
|
packet_data = payload;
|
||||||
packet_data_len = payload_len;
|
packet_data_len = payload_len;
|
||||||
if (DEBUG) print_data(stdout,"Data",packet_data,packet_data_len,1000);
|
if (DEBUG) print_data(TRUE,"Data",packet_data,packet_data_len,1000);
|
||||||
|
|
||||||
#if 0 // XXX
|
#if 0 // XXX
|
||||||
printf("===========================================\n");
|
printf("===========================================\n");
|
||||||
print_data(stdout,"build_pmt_data(old)",packet_data,packet_data_len,100);
|
print_data(TRUE,"build_pmt_data(old)",packet_data,packet_data_len,100);
|
||||||
#endif
|
#endif
|
||||||
if (space_left > packet_data_len)
|
if (space_left > packet_data_len)
|
||||||
{
|
{
|
||||||
|
@ -2569,7 +2569,7 @@ extern int extract_pmt(int verbose,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG) print_data(stdout,"Data",data,data_len,1000);
|
if (DEBUG) print_data(TRUE,"Data",data,data_len,1000);
|
||||||
|
|
||||||
// Check the table id (maybe this should be done by our caller?)
|
// Check the table id (maybe this should be done by our caller?)
|
||||||
table_id = data[0];
|
table_id = data[0];
|
||||||
|
@ -2583,7 +2583,7 @@ extern int extract_pmt(int verbose,
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
printf(" 'PMT' with PID %04x is user private table %02x\n",pid,table_id);
|
printf(" 'PMT' with PID %04x is user private table %02x\n",pid,table_id);
|
||||||
print_data(stdout," Data",data,data_len,20);
|
print_data(TRUE," Data",data,data_len,20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2596,7 +2596,7 @@ extern int extract_pmt(int verbose,
|
||||||
table_id,(table_id==0x00?"PAT":
|
table_id,(table_id==0x00?"PAT":
|
||||||
table_id==0x01?"CAT":
|
table_id==0x01?"CAT":
|
||||||
table_id==0xFF?"Forbidden":"???"));
|
table_id==0xFF?"Forbidden":"???"));
|
||||||
print_data(stderr," Data",data,data_len,20);
|
print_data(FALSE," Data",data,data_len,20);
|
||||||
}
|
}
|
||||||
// Best we can do is to pretend it didn't happen
|
// Best we can do is to pretend it didn't happen
|
||||||
*pmt = build_pmt(0,0,0); // empty "PMT" with program number 0, PCR PID 0
|
*pmt = build_pmt(0,0,0); // empty "PMT" with program number 0, PCR PID 0
|
||||||
|
@ -2697,7 +2697,7 @@ extern int extract_pmt(int verbose,
|
||||||
stream_data = data + 12 + program_info_length;
|
stream_data = data + 12 + program_info_length;
|
||||||
stream_data_len = data_len - 12 - program_info_length - 4; // "-4" == CRC
|
stream_data_len = data_len - 12 - program_info_length - 4; // "-4" == CRC
|
||||||
|
|
||||||
//print_data(stdout,"Rest:",stream_data,stream_data_len,1000);
|
//print_data(TRUE,"Rest:",stream_data,stream_data_len,1000);
|
||||||
|
|
||||||
*pmt = build_pmt(program_number,version_number,pcr_pid);
|
*pmt = build_pmt(program_number,version_number,pcr_pid);
|
||||||
if (*pmt == NULL) return 1;
|
if (*pmt == NULL) return 1;
|
||||||
|
@ -2799,10 +2799,10 @@ extern int extract_stream_list_from_pmt(int verbose,
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (DEBUG) print_data(stdout,"PMT",payload,payload_len,1000);
|
// if (DEBUG) print_data(TRUE,"PMT",payload,payload_len,1000);
|
||||||
data = payload + pointer + 1;
|
data = payload + pointer + 1;
|
||||||
data_len = payload_len - pointer - 1;
|
data_len = payload_len - pointer - 1;
|
||||||
if (DEBUG) print_data(stdout,"Data",data,data_len,1000);
|
if (DEBUG) print_data(TRUE,"Data",data,data_len,1000);
|
||||||
|
|
||||||
// Check the table id (maybe this should be done by our caller?)
|
// Check the table id (maybe this should be done by our caller?)
|
||||||
table_id = data[0];
|
table_id = data[0];
|
||||||
|
@ -2816,7 +2816,7 @@ extern int extract_stream_list_from_pmt(int verbose,
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
printf(" 'PMT' with PID %04x is user private table %02x\n",pid,table_id);
|
printf(" 'PMT' with PID %04x is user private table %02x\n",pid,table_id);
|
||||||
print_data(stdout," Data",data,data_len,20);
|
print_data(TRUE," Data",data,data_len,20);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2829,7 +2829,7 @@ extern int extract_stream_list_from_pmt(int verbose,
|
||||||
table_id,(table_id==0x00?"PAT":
|
table_id,(table_id==0x00?"PAT":
|
||||||
table_id==0x01?"CAT":
|
table_id==0x01?"CAT":
|
||||||
table_id==0xFF?"Forbidden":"???"));
|
table_id==0xFF?"Forbidden":"???"));
|
||||||
print_data(stderr," Data",data,data_len,20);
|
print_data(FALSE," Data",data,data_len,20);
|
||||||
}
|
}
|
||||||
// Best we can do is to pretend it didn't happen
|
// Best we can do is to pretend it didn't happen
|
||||||
*program_number = 0;
|
*program_number = 0;
|
||||||
|
@ -2928,7 +2928,7 @@ extern int extract_stream_list_from_pmt(int verbose,
|
||||||
stream_data = data + 12 + program_info_length;
|
stream_data = data + 12 + program_info_length;
|
||||||
stream_data_len = data_len - 12 - program_info_length - 4; // "-4" == CRC
|
stream_data_len = data_len - 12 - program_info_length - 4; // "-4" == CRC
|
||||||
|
|
||||||
//print_data(stdout,"Rest:",stream_data,stream_data_len,1000);
|
//print_data(TRUE,"Rest:",stream_data,stream_data_len,1000);
|
||||||
|
|
||||||
err = build_pidint_list(stream_list);
|
err = build_pidint_list(stream_list);
|
||||||
if (err) return 1;
|
if (err) return 1;
|
||||||
|
|
6
ts2es.c
6
ts2es.c
|
@ -234,7 +234,7 @@ static int extract_pid_packets(TS_reader_p tsreader,
|
||||||
}
|
}
|
||||||
data = &payload[offset];
|
data = &payload[offset];
|
||||||
data_len = payload_len-offset;
|
data_len = payload_len-offset;
|
||||||
if (verbose) print_data(stdout,"data",data,data_len,1000);
|
if (verbose) print_data(TRUE,"data",data,data_len,1000);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -247,7 +247,7 @@ static int extract_pid_packets(TS_reader_p tsreader,
|
||||||
|
|
||||||
data = payload;
|
data = payload;
|
||||||
data_len = payload_len;
|
data_len = payload_len;
|
||||||
if (verbose) print_data(stdout,"Data",payload,payload_len,1000);
|
if (verbose) print_data(TRUE,"Data",payload,payload_len,1000);
|
||||||
|
|
||||||
if (got_pes_packet_len)
|
if (got_pes_packet_len)
|
||||||
{
|
{
|
||||||
|
@ -255,7 +255,7 @@ static int extract_pid_packets(TS_reader_p tsreader,
|
||||||
if (data_len > pes_packet_len)
|
if (data_len > pes_packet_len)
|
||||||
{
|
{
|
||||||
data_len = pes_packet_len;
|
data_len = pes_packet_len;
|
||||||
if (verbose) print_data(stdout,"Reduced data",data,data_len,1000);
|
if (verbose) print_data(TRUE,"Reduced data",data,data_len,1000);
|
||||||
pes_packet_len = 0;
|
pes_packet_len = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -920,10 +920,10 @@ static int report_ts(TS_reader_p tsreader,
|
||||||
payload_unit_start_indicator);
|
payload_unit_start_indicator);
|
||||||
if (!show_data && payload_unit_start_indicator)
|
if (!show_data && payload_unit_start_indicator)
|
||||||
{
|
{
|
||||||
print_data(stdout," Data",payload,payload_len,20);
|
print_data(TRUE," Data",payload,payload_len,20);
|
||||||
}
|
}
|
||||||
#if 0 // XXX
|
#if 0 // XXX
|
||||||
print_end_of_data(stdout," ",payload,payload_len,20);
|
print_end_of_data(" ",payload,payload_len,20);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -987,8 +987,8 @@ static int report_single_pid(TS_reader_p tsreader,
|
||||||
(payload_unit_start_indicator?" [pusi]":""));
|
(payload_unit_start_indicator?" [pusi]":""));
|
||||||
|
|
||||||
if (adapt_len > 0)
|
if (adapt_len > 0)
|
||||||
print_data(stdout," Adapt",adapt,adapt_len,adapt_len);
|
print_data(TRUE," Adapt",adapt,adapt_len,adapt_len);
|
||||||
print_data(stdout, " Payload",payload,payload_len,payload_len);
|
print_data(TRUE, " Payload",payload,payload_len,payload_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf("Read %d TS packet%s, %d with PID %0x\n",
|
printf("Read %d TS packet%s, %d with PID %0x\n",
|
||||||
|
|
|
@ -1034,7 +1034,7 @@ static int back_to_normal(stream_context stream,
|
||||||
printf(" last item starts at " OFFSET_T_FORMAT "/%d,\n",
|
printf(" last item starts at " OFFSET_T_FORMAT "/%d,\n",
|
||||||
stream.u.h262->last_item->unit.start_posn.infile,
|
stream.u.h262->last_item->unit.start_posn.infile,
|
||||||
stream.u.h262->last_item->unit.start_posn.inpacket);
|
stream.u.h262->last_item->unit.start_posn.inpacket);
|
||||||
print_data(stdout," last item",
|
print_data(TRUE," last item",
|
||||||
stream.u.h262->last_item->unit.data,
|
stream.u.h262->last_item->unit.data,
|
||||||
stream.u.h262->last_item->unit.data_len,20);
|
stream.u.h262->last_item->unit.data_len,20);
|
||||||
}
|
}
|
||||||
|
@ -1046,7 +1046,7 @@ static int back_to_normal(stream_context stream,
|
||||||
printf(" last item starts at " OFFSET_T_FORMAT "/%d,\n",
|
printf(" last item starts at " OFFSET_T_FORMAT "/%d,\n",
|
||||||
stream.u.h264->pending_nal->unit.start_posn.infile,
|
stream.u.h264->pending_nal->unit.start_posn.infile,
|
||||||
stream.u.h264->pending_nal->unit.start_posn.inpacket);
|
stream.u.h264->pending_nal->unit.start_posn.inpacket);
|
||||||
print_data(stdout," pending NAL unit",
|
print_data(TRUE," pending NAL unit",
|
||||||
stream.u.h264->pending_nal->unit.data,
|
stream.u.h264->pending_nal->unit.data,
|
||||||
stream.u.h264->pending_nal->unit.data_len,20);
|
stream.u.h264->pending_nal->unit.data_len,20);
|
||||||
}
|
}
|
||||||
|
@ -1122,7 +1122,7 @@ static int back_to_normal(stream_context stream,
|
||||||
if (extra_info)
|
if (extra_info)
|
||||||
{
|
{
|
||||||
printf(".. so output %d bytes at end of PES packet\n",length_wanted);
|
printf(".. so output %d bytes at end of PES packet\n",length_wanted);
|
||||||
print_data(stdout,".. end bytes",&reader->packet->es_data[start_offset],
|
print_data(TRUE,".. end bytes",&reader->packet->es_data[start_offset],
|
||||||
length_wanted,20);
|
length_wanted,20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue