// CMD line module (AVInfo) // parsing command line, setup template variable // History: // added 13.02.03 (v0.7) // fixed '-' (06.08.03) void Init(char *info[],file_data *file_d, char* template[]) { //set default config & global variable int counter; for(counter=0;counter<23;counter++)info[counter]=NULL; flags.disable.info=0; flags.disable.eight=0; flags.disable.accuracy=0; flags.error.message=1; flags.error.ignore=0; flags.direct.header=1;//use "direct" reading. flags.ogm=0; file_d->filename=""; file_d->size=0; template[0]=default_template[0]; template[1]=default_template[1]; } int check_predefined_template(const char *line){ //compare line with signatures and return number of eqv. //return -1 if nothing found; int counter; for(counter=0;counter='0' && *pointer<=PREDEFINED_NUMBER+'0'){ template[0]=predefined[*pointer-'0'][1]; template[1]=predefined[*pointer-'0'][2]; state=CMD_MODE_NORM; pointer+=strlen(pointer)-1; break; } template_predef=check_predefined_template(pointer); if(template_predef!=-1){ template[0]=predefined[template_predef][1]; template[1]=predefined[template_predef][2]; } else puts("No such predefined template"); pointer+=strlen(pointer)-1; state=CMD_MODE_NORM; break; case CMD_MODE_NAME: file_d->filename=pointer; pointer+=strlen(pointer)-1; state=CMD_MODE_NORM; name_flag=1; break; case CMD_MODE_TEMPLATE: if(*pointer=='+') { template[template_number]=default_template[template_number++]; pointer+=strlen(pointer)-1; state=CMD_MODE_NORM; break; } if(*pointer=='?'){ gets(buffer); template[template_number++]=buffer; buffer+=strlen(buffer); pointer+=strlen(pointer)-1; state=CMD_MODE_NORM; break; } template[template_number++]=pointer; pointer+=strlen(pointer)-1; state=CMD_MODE_NORM; break; } } } if(flags.disable.accuracy){ //Thanx to Slava Suhanov (2:5030/1045) for this idea. if (strlen(GetFileNameOnly(file_d->filename,0))>40 && template_predef==0){//compress output (if "description") to the 80 chars. template[0]="%J: %sb %xx%y\n"; template[1]=""; flags.disable.info=1; //turn off unnesesary for this template flags.disable.index=1; flags.disable.streams=1; } if(strlen(GetFileNameOnly(file_d->filename,0))>67 && template_predef==0){ template[0]="%J: %xx%y\n"; } } ///*DEBUG*/printf("(debug) flags: no_info=%d, no_streams=%d, seven=%d, error_ignore=%d, error_message=%d\n", flags.no_info,flags.no_streams,flags.seven,flags.error_ignore,flags.error_message); if(!*file_d->filename) exit(puts(help_message)); return 0; } //redo (from avinfo.c) /* if (!strcmp(argv[1],"--codec")){ if (argc<3) return puts("Usage: avinfo --codec FOURCC"); if (strlen(argv[2])>4) return puts ("FOURCC must be no more then 4 chars"); fill(buffer,' ',4); sscanf(argv[2], "%s", buffer); FormatCodecInfo(buffer); puts(buffer); free (buffer); return 0; }*/