diff --git a/src/port/getopt_long.c b/src/port/getopt_long.c new file mode 100644 index d624216..5076bbe *** a/src/port/getopt_long.c --- b/src/port/getopt_long.c *************** getopt_long(int argc, char *const argv[] *** 60,67 **** { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ ! ! if (!*place) { /* update scanning pointer */ if (optind >= argc) { --- 60,71 ---- { static char *place = EMSG; /* option letter processing */ char *oli; /* option letter list index */ ! if (place[0] == '-') /*Check if current argument is another option to be processed instead of path of file for -f */ ! { ! place++; ! optopt = (int) *place++; ! } ! if (!*place && (optopt != 'f'))//introduced extra check so that if next argument received is 2nd file for -f it doesn't exit. { /* update scanning pointer */ if (optind >= argc) { *************** getopt_long(int argc, char *const argv[] *** 157,162 **** --- 161,168 ---- } } + if ((optopt != 'f')) + { /* short option */ optopt = (int) *place++; *************** getopt_long(int argc, char *const argv[] *** 198,202 **** --- 204,217 ---- place = EMSG; ++optind; } + } + else//to update the list of files to be read + { + optarg = argv[optind]; + place = EMSG; + ++optind; + place = argv[optind]; + + } return optopt; }