73 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * 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>
 | 
						|
 | 
						|
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 = bb_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
 | 
						|
 | 
						|
 |