875 struct option long_options[] =
876 {
903 {"gzip", no_argument, NULL, 'z'},
904 {"help", no_argument, &show_help, 1},
1509 case 'z':
1510 if (flag_compressprog)
1511 ERROR ((TAREXIT_FAILURE, 0,
1512 _("Only one compression option permitted")));
1513 flag_compressprog = "gzip";
1514 break;
1515
1516 case 'Z':
1517 if (flag_compressprog)
1518 ERROR ((TAREXIT_FAILURE, 0,
1519 _("Only one compression option permitted")));
1520 flag_compressprog = "compress";
1521 break;
484
485
486 if (ar_reading)
487 execlp (flag_compressprog, flag_compressprog, "-d", (char *) 0);
488 else
489 execlp (flag_compressprog, flag_compressprog, (char *) 0);
490
関数 execlp() と execvp() は、指定されたファイル名がスラッシュ (/) を含んでいない場合、 シェルと同じ動作で実行可能なファイルを探索する。 検索パスは環境変数 PATH で指定されたパスである。 この変数が指定されていない場合、デフォルトPATHとして ":/bin:/usr/bin" が使用される。 また、いくつかのエラーが発生した場合の扱いが特殊である。
もしファイルが実行ファイルでない場合 (このとき呼び出そうとした execve(2) はエラー EACCES で失敗する)、これらの関数は残りの検索パスの検索を続ける。 他にファイルが見つからなくなった場合グローバル変数 errno に EACCES を設定し復帰する。