Просмотр исходного кода

From: David Decotigny <decot@googlers.com>
Date: Thu, 31 Jul 2014 13:30:07 -0700
Subject: [PATCH 1/4] move cmdline parser to its own file

Signed-off-by: David Decotigny <decot@googlers.com>
Signed-off-by: Nigel Croxon <nigel.croxon@hp.com>

Nigel Croxon 10 лет назад
Родитель
Сommit
7f173da1e5
3 измененных файлов с 50 добавлено и 49 удалено
  1. 1 1
      gnu-efi-3.0/lib/Makefile
  2. 49 0
      gnu-efi-3.0/lib/cmdline.c
  3. 0 48
      gnu-efi-3.0/lib/init.c

+ 1 - 1
gnu-efi-3.0/lib/Makefile

@@ -45,7 +45,7 @@ TOPDIR = $(SRCDIR)/..
 CDIR = $(TOPDIR)/..
 FILES = boxdraw smbios console crc data debug dpath  \
         error event guid hand hw init lock   \
-        misc print sread str \
+        misc print sread str cmdline \
 	runtime/rtlock runtime/efirtlib runtime/rtstr runtime/vm runtime/rtdata  \
 	$(ARCH)/initplat $(ARCH)/math 
 

+ 49 - 0
gnu-efi-3.0/lib/cmdline.c

@@ -0,0 +1,49 @@
+#include "lib.h"
+
+#ifndef MAX_ARGV_CONTENTS_SIZE
+# define MAX_CMDLINE_SIZE 1024
+#endif
+#ifndef MAX_ARGC
+# define MAX_CMDLINE_ARGC 32
+#endif
+
+INTN
+GetShellArgcArgv(
+    EFI_HANDLE ImageHandle,
+    CHAR16 **ResultArgv[]
+    )
+{
+  EFI_STATUS Status;
+  EFI_LOADED_IMAGE *LoadedImage = NULL;
+  static CHAR16 ArgvContents[MAX_CMDLINE_SIZE];
+  static CHAR16 *Argv[MAX_CMDLINE_ARGC], *ArgStart, *c;
+  UINTN Argc = 0, BufLen;
+
+  Status = uefi_call_wrapper(BS->HandleProtocol, 3,
+                             ImageHandle, &LoadedImageProtocol, &LoadedImage);
+  if (EFI_ERROR(Status))
+    return -1;
+
+  BufLen = LoadedImage->LoadOptionsSize;
+  if (BufLen < 2)  /* We are expecting at least a \0 */
+    return -1;
+  else if (BufLen > sizeof(ArgvContents))
+    BufLen = sizeof(ArgvContents);
+
+  CopyMem(ArgvContents, LoadedImage->LoadOptions, BufLen);
+  ArgvContents[MAX_CMDLINE_SIZE - 1] = L'\0';
+
+  for (c = ArgStart = ArgvContents ; *c != L'\0' ; ++c) {
+    if (*c == L' ') {
+      *c = L'\0';
+      if (Argc < MAX_CMDLINE_ARGC) Argv[Argc++] = ArgStart;
+      ArgStart = c + 1;
+    }
+  }
+
+  if ((*ArgStart != L'\0') && (Argc < MAX_CMDLINE_ARGC))
+    Argv[Argc++] = ArgStart;
+
+  *ResultArgv = Argv;
+  return Argc;
+}

+ 0 - 48
gnu-efi-3.0/lib/init.c

@@ -165,54 +165,6 @@ Done:
     }
 }
 
-#ifndef MAX_ARGV_CONTENTS_SIZE
-# define MAX_CMDLINE_SIZE 1024
-#endif
-#ifndef MAX_ARGC
-# define MAX_CMDLINE_ARGC 32
-#endif
-
-INTN
-GetShellArgcArgv(
-    EFI_HANDLE ImageHandle,
-    CHAR16 **ResultArgv[]
-    )
-{
-  EFI_STATUS Status;
-  EFI_LOADED_IMAGE *LoadedImage = NULL;
-  static CHAR16 ArgvContents[MAX_CMDLINE_SIZE];
-  static CHAR16 *Argv[MAX_CMDLINE_ARGC], *ArgStart, *c;
-  UINTN Argc = 0, BufLen;
-
-  Status = uefi_call_wrapper(BS->HandleProtocol, 3,
-                             ImageHandle, &LoadedImageProtocol, &LoadedImage);
-  if (EFI_ERROR(Status))
-    return -1;
-
-  BufLen = LoadedImage->LoadOptionsSize;
-  if (BufLen < 2)  /* We are expecting at least a \0 */
-    return -1;
-  else if (BufLen > sizeof(ArgvContents))
-    BufLen = sizeof(ArgvContents);
-
-  CopyMem(ArgvContents, LoadedImage->LoadOptions, BufLen);
-  ArgvContents[MAX_CMDLINE_SIZE - 1] = L'\0';
-
-  for (c = ArgStart = ArgvContents ; *c != L'\0' ; ++c) {
-    if (*c == L' ') {
-      *c = L'\0';
-      if (Argc < MAX_CMDLINE_ARGC) Argv[Argc++] = ArgStart;
-      ArgStart = c + 1;
-    }
-  }
-
-  if ((*ArgStart != L'\0') && (Argc < MAX_CMDLINE_ARGC))
-    Argv[Argc++] = ArgStart;
-
-  *ResultArgv = Argv;
-  return Argc;
-}
-
 VOID
 EFIDebugVariable (
     VOID