ParseCmdLine.c 620 B

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Turn an CHAR16 * command line into a CHAR16 * argv, INT argc pair.
  3. *
  4. */
  5. #include <efi.h>
  6. #include <efilib.h>
  7. #include <ParseCmdLine.h>
  8. INTN ParseCmdLine(CHAR16 *argv[MAX_ARGS], CHAR16 *buf, UINTN len)
  9. {
  10. CHAR16 *arg_start, *c;
  11. INTN argc = 0;
  12. if (len < 2)
  13. return -1;
  14. buf[(len / 2) - 1] = L'\0';
  15. for (c = arg_start = buf ; *c ; ++c) {
  16. if (*c == L' ') {
  17. *c = L'\0';
  18. if (argc < MAX_ARGS) argv[argc++] = arg_start;
  19. arg_start = c + 1;
  20. }
  21. }
  22. if ((*arg_start != L'\0') && (argc < MAX_ARGS))
  23. argv[argc++] = arg_start;
  24. return argc;
  25. }