busybox/libbb/compare_string_array.c
<<
>>
Prefs
   1/* vi: set sw=4 ts=4: */
   2/*
   3 * Licensed under GPLv2 or later, see file LICENSE in this tarball for details.
   4 */
   5
   6#include "libbb.h"
   7
   8/* returns the array index of the string */
   9/* (index of first match is returned, or -1) */
  10int FAST_FUNC index_in_str_array(const char *const string_array[], const char *key)
  11{
  12        int i;
  13
  14        for (i = 0; string_array[i] != 0; i++) {
  15                if (strcmp(string_array[i], key) == 0) {
  16                        return i;
  17                }
  18        }
  19        return -1;
  20}
  21
  22int FAST_FUNC index_in_strings(const char *strings, const char *key)
  23{
  24        int idx = 0;
  25
  26        while (*strings) {
  27                if (strcmp(strings, key) == 0) {
  28                        return idx;
  29                }
  30                strings += strlen(strings) + 1; /* skip NUL */
  31                idx++;
  32        }
  33        return -1;
  34}
  35
  36/* returns the array index of the string, even if it matches only a beginning */
  37/* (index of first match is returned, or -1) */
  38#ifdef UNUSED
  39int FAST_FUNC index_in_substr_array(const char *const string_array[], const char *key)
  40{
  41        int i;
  42        int len = strlen(key);
  43        if (len) {
  44                for (i = 0; string_array[i] != 0; i++) {
  45                        if (strncmp(string_array[i], key, len) == 0) {
  46                                return i;
  47                        }
  48                }
  49        }
  50        return -1;
  51}
  52#endif
  53
  54int FAST_FUNC index_in_substrings(const char *strings, const char *key)
  55{
  56        int len = strlen(key);
  57
  58        if (len) {
  59                int idx = 0;
  60                while (*strings) {
  61                        if (strncmp(strings, key, len) == 0) {
  62                                return idx;
  63                        }
  64                        strings += strlen(strings) + 1; /* skip NUL */
  65                        idx++;
  66                }
  67        }
  68        return -1;
  69}
  70
  71const char* FAST_FUNC nth_string(const char *strings, int n)
  72{
  73        while (n) {
  74                n--;
  75                strings += strlen(strings) + 1;
  76        }
  77        return strings;
  78}
  79