Справочник по консольным командам Toybox для Android 12


  Ver.0.8.4     Ver.0.8.9     Pending  

Путь: Toys/Other, команды версии: Ver.4     Ver.9


which

Комментарии в файле which.c :

usage: which [-a] filename ...

Найдите в $PATH исполняемые файлы, соответствующие именам файлов.
  • -a Показать все совпадения

  • usage: which [-a] filename ...

    Search $PATH for executable files matching filename(s).
  • -a Show all matches

  • Исходный текст в файле which.c

    #include "toys.h"
    
    // Find an exectuable file either at a path with a slash in it (absolute or
    // relative to current directory), or in $PATH.  Returns absolute path to file,
    // or NULL if not found.
    
    static int which_in_path(char *filename)
    {
      struct string_list *list;
    
      // If they gave us a path, don't worry about $PATH or -a
    
      if (strchr(filename, '/')) {
        // Confirm it has the executable bit set, and it's not a directory.
        if (!access(filename, X_OK)) {
          struct stat st;
    
          if (!stat(filename, &st) && S_ISREG(st.st_mode)) {
            puts(filename);
            return 0;
          }
          return 1;
        }
      }
    
      // Search $PATH for matches.
      list = find_in_path(getenv("PATH"), filename);
      if (!list) return 1;
    
      // Print out matches
      while (list) {
        if (!access(list->str, X_OK)) {
          puts(list->str);
          // If we should stop at one match, do so
          if (!toys.optflags) {
            llist_traverse(list, free);
            break;
          }
        }
        free(llist_pop(&list));
      }
    
      return 0;
    }
    
    void which_main(void)
    {
      int i;
    
      for (i=0; toys.optargs[i]; i++)
        toys.exitval |= which_in_path(toys.optargs[i]);
    }