소스 검색

Handle getopt reinitialization

Tibor Nagy 6 년 전
부모
커밋
f97f93c48d
1개의 변경된 파일6개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      src/header/getopt/mod.rs

+ 6 - 0
src/header/getopt/mod.rs

@@ -30,6 +30,12 @@ pub unsafe extern "C" fn getopt_long(
     // if optarg is not set, we still don't want the previous value leaking
     optarg = ptr::null_mut();
 
+    // handle reinitialization request
+    if optind == 0 {
+        optind = 1;
+        CURRENT_OPT = ptr::null_mut();
+    }
+
     if CURRENT_OPT.is_null() || *CURRENT_OPT == 0 {
         if optind >= argc {
             -1