util.c 361 B

123456789101112131415161718192021222324
  1. #include <linux/dcache.h>
  2. unsigned name_to_int(const struct qstr *qstr)
  3. {
  4. const char *name = qstr->name;
  5. int len = qstr->len;
  6. unsigned n = 0;
  7. if (len > 1 && *name == '0')
  8. goto out;
  9. do {
  10. unsigned c = *name++ - '0';
  11. if (c > 9)
  12. goto out;
  13. if (n >= (~0U-9)/10)
  14. goto out;
  15. n *= 10;
  16. n += c;
  17. } while (--len > 0);
  18. return n;
  19. out:
  20. return ~0U;
  21. }