d921b2ecc0
things like xasprintf() into xfuncs.c, remove xprint_file_by_name() (it only had one user), clean up lots of #includes... General cleanup pass. What I've been doing for the last couple days. And it conflicts! I've removed httpd.c from this checkin due to somebody else touching that file. It builds for me. I have to catch a bus. (Now you know why I'm looking forward to Mercurial.)
75 lines
1.1 KiB
C
75 lines
1.1 KiB
C
/* vi: set sw=4 ts=4: */
|
|
/*
|
|
* getostype.c - Get the Filesystem OS type
|
|
*
|
|
* Copyright (C) 2004,2005 Theodore Ts'o <tytso@mit.edu>
|
|
*
|
|
* This file can be redistributed under the terms of the GNU Library General
|
|
* Public License
|
|
*/
|
|
|
|
#include "e2p.h"
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
static const char * const 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 <= EXT2_OS_LITES)
|
|
os = os_tab[os_type];
|
|
else
|
|
os = "(unknown os)";
|
|
|
|
ret = xstrdup(os);
|
|
return ret;
|
|
}
|
|
|
|
/*
|
|
* Convert an os_type to a string
|
|
*/
|
|
int e2p_string2os(char *str)
|
|
{
|
|
const char * const *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);
|
|
if (i != os) {
|
|
fprintf(stderr, "Failure!\n");
|
|
exit(1);
|
|
}
|
|
}
|
|
exit(0);
|
|
}
|
|
#endif
|
|
|
|
|