diff options
author | szabii <szabii@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-03-10 21:03:51 +0000 |
---|---|---|
committer | szabii <szabii@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-03-10 21:03:51 +0000 |
commit | 0b7ffc1775a969d869d27fc11b8e703916fa9fef (patch) | |
tree | bbdd37618281f40da8031eefd188d183ab02a959 | |
parent | 3427aaa811eeb11a6875ff4fb612f94da00d2cab (diff) | |
download | mpv-0b7ffc1775a969d869d27fc11b8e703916fa9fef.tar.bz2 mpv-0b7ffc1775a969d869d27fc11b8e703916fa9fef.tar.xz |
option parser fix
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@72 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | mplayer.c | 81 |
1 files changed, 48 insertions, 33 deletions
@@ -281,6 +281,16 @@ void exit_sighandler(int x){ exit_player(NULL); } +void usage(void){ + printf("%s",help_text); + exit(0); +} + +void missing_param(char *s){ + printf("Missing parameter: %s\n", s); + exit(1); +} + int divx_quality=0; int main(int argc,char* argv[]){ @@ -335,6 +345,10 @@ int force_ni=0; printf("%s",banner_text); +/* CHKOPT(a): check, wether there is 'a' more options left */ +#define CHKOPT(a) if ((argc - i) < (a + 1)) missing_param(argv[i]); +if (argc == 1) + usage(); for(i=1;i<argc;i++){ if(strcmp(argv[i],"-o")==0){ printf("Option -o has been renamed to -vo (video-out), use -vo !\n"); @@ -344,48 +358,49 @@ for(i=1;i<argc;i++){ printf("Option -divxq has been renamed to -pp (postprocessing), use -pp !\n"); exit(1); } else - if(strcmp(argv[i],"-vo")==0) video_driver=argv[++i]; else - if(strcmp(argv[i],"-dsp")==0) dsp=argv[++i]; else - if(strcmp(argv[i],"-encode")==0) encode_name=argv[++i]; else - if(strcmp(argv[i],"-bg")==0) play_in_bg=1; else - if(strcmp(argv[i],"-sb")==0) seek_to_byte=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-ss")==0) seek_to_sec=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-nosound")==0) has_audio=0; else - if(strcmp(argv[i],"-abs")==0) audio_buffer_size=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-delay")==0) audio_delay=strtod(argv[++i],NULL); else + if(strcmp(argv[i],"-vo")==0) {CHKOPT(1); video_driver=argv[++i];} else + if(strcmp(argv[i],"-dsp")==0) {CHKOPT(1); dsp=argv[++i];} else + if(strcmp(argv[i],"-encode")==0) {CHKOPT(1); encode_name=argv[++i];} else + if(strcmp(argv[i],"-bg")==0) {play_in_bg=1;} else + if(strcmp(argv[i],"-sb")==0) {CHKOPT(1); seek_to_byte=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-ss")==0) {CHKOPT(1); seek_to_sec=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-nosound")==0) {has_audio=0;} else + if(strcmp(argv[i],"-abs")==0) {CHKOPT(1); audio_buffer_size=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-delay")==0) {CHKOPT(1); audio_delay=strtod(argv[++i],NULL);} else #ifdef AVI_SYNC_BPS - if(strcmp(argv[i],"-nobps")==0) pts_from_bps=0; else + if(strcmp(argv[i],"-nobps")==0) {pts_from_bps=0;} else #else - if(strcmp(argv[i],"-bps")==0) pts_from_bps=1; else + if(strcmp(argv[i],"-bps")==0) {pts_from_bps=1;} else #endif #ifdef ALSA_TIMER - if(strcmp(argv[i],"-noalsa")==0) alsa=0; else + if(strcmp(argv[i],"-noalsa")==0) {alsa=0;} else #else - if(strcmp(argv[i],"-alsa")==0) alsa=1; else + if(strcmp(argv[i],"-alsa")==0) {alsa=1;} else #endif - if(strcmp(argv[i],"-ni")==0) force_ni=1; else - if(strcmp(argv[i],"-aid")==0) audio_id=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-vid")==0) video_id=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-auds")==0) avi_header.audio_codec=argv[++i]; else - if(strcmp(argv[i],"-vids")==0) avi_header.video_codec=argv[++i]; else - if(strcmp(argv[i],"-mc")==0) default_max_pts_correction=strtod(argv[++i],NULL); else - if(strcmp(argv[i],"-fps")==0) force_fps=strtod(argv[++i],NULL); else - if(strcmp(argv[i],"-afm")==0) audio_format=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-vcd")==0) vcd_track=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-pp")==0) divx_quality=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-br")==0) encode_bitrate=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-x")==0) screen_size_x=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-y")==0) screen_size_y=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-xy")==0) screen_size_xy=strtol(argv[++i],NULL,0); else - if(strcmp(argv[i],"-fs")==0) fullscreen=1; else - if(strcmp(argv[i],"-noidx")==0) no_index=1; else - if(strcmp(argv[i],"-v")==0) ++verbose; else - if(strcmp(argv[i],"-h")==0) break; else - if(strcmp(argv[i],"--help")==0) break; else + if(strcmp(argv[i],"-ni")==0) {force_ni=1;} else + if(strcmp(argv[i],"-aid")==0) {CHKOPT(1); audio_id=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-vid")==0) {CHKOPT(1); video_id=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-auds")==0) {CHKOPT(1); avi_header.audio_codec=argv[++i];} else + if(strcmp(argv[i],"-vids")==0) {CHKOPT(1); avi_header.video_codec=argv[++i];} else + if(strcmp(argv[i],"-mc")==0) {CHKOPT(1); default_max_pts_correction=strtod(argv[++i],NULL);} else + if(strcmp(argv[i],"-fps")==0) {CHKOPT(1); force_fps=strtod(argv[++i],NULL);} else + if(strcmp(argv[i],"-afm")==0) {CHKOPT(1); audio_format=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-vcd")==0) {CHKOPT(1); vcd_track=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-pp")==0) {CHKOPT(1); divx_quality=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-br")==0) {CHKOPT(1); encode_bitrate=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-x")==0) {CHKOPT(1); screen_size_x=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-y")==0) {CHKOPT(1); screen_size_y=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-xy")==0) {CHKOPT(1); screen_size_xy=strtol(argv[++i],NULL,0);} else + if(strcmp(argv[i],"-fs")==0) {fullscreen=1;} else + if(strcmp(argv[i],"-noidx")==0) {no_index=1;} else + if(strcmp(argv[i],"-v")==0) {++verbose;} else + if(strcmp(argv[i],"-h")==0) {usage();} else + if(strcmp(argv[i],"--help")==0) {usage();} else { if(filename){ printf("invalid option: %s\n",filename);exit(1);} filename=argv[i]; } } +#undef CHKOPT /* we don't need this anymore */ // Many users forget to include command line in bugreports... if(verbose){ @@ -425,7 +440,7 @@ if(!filename){ if(vcd_track) filename="/dev/cdrom"; else //filename="MI2-Trailer.avi"; - { printf("%s",help_text); exit(0);} + usage(); } |