#include "lslib.h" #include #include #include #include #include long int get_number(const char* text) { char* end; long int n = strtol(text, &end, 10); if (text == end) { error("%s is not a valid number", text); } return n; } long int get_blkm(const char* text) { char* end; long int n = strtol(text, &end, 10); if (text == end) { error("%s is not a valid bkm", text); } if (*end == '\0') return n; switch (*end) { case 'K': case 'k': return n * 1024; case 'B': case 'b': return n * 512; case 'M': case 'm': return n * 1024 * 1204; default: error("invalid bkm type %c", *end); } /* shouldnt get here anyways */ return 0; } mode_t get_mode(const char* next) { char* end = NULL; mode_t mode = (mode_t)strtol(next, &end, 8); if (!end) return 0; while(isspace(*end)) end++; if (*end != '\0' || (unsigned) mode >= 010000) { error("invalid file mode: `%s`", next); } return mode; } bool streql(const char* a, const char* b) { int n = 0; if (*a != *b) return false; while (true) { if (*(a+n) != *(b+n)) return false; if (*(a+n) == '\0') return true; ++n; } } bool prefix(const char* pre, const char* str) { return strncmp(pre, str, strlen(pre)) == 0; }