/* * getostype.c - Get the Filesystem OS type * * Copyright (C) 2004,2005 Theodore Ts'o * * %Begin-Header% * This file may be redistributed under the terms of the GNU Library * General Public License, version 2. * %End-Header% */ #include "config.h" #include "e2p.h" #include #include static const char *os_tab[] = { "Linux", "Hurd", "Masix", "FreeBSD", "Lites", 0 }; /* * Convert an os_type to a string */ char *e2p_os2string(int os_type) { const char *os; char *ret; if (os_type >= 0 && os_type <= EXT2_OS_LITES) os = os_tab[os_type]; else os = "(unknown os)"; ret = malloc(strlen(os)+1); if (ret) strcpy(ret, os); return ret; } /* * Convert an os_type to a string */ int e2p_string2os(char *str) { const char **cpp; int i = 0; for (cpp = os_tab; *cpp; cpp++, i++) { if (!strcasecmp(str, *cpp)) return i; } return -1; } #ifdef TEST_PROGRAM int main(int argc, char **argv) { char *s; int i, os; for (i=0; i <= EXT2_OS_LITES; i++) { s = e2p_os2string(i); os = e2p_string2os(s); printf("%d: %s (%d)\n", i, s, os); free(s); if (i != os) { fprintf(stderr, "Failure!\n"); exit(1); } } exit(0); } #endif