[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: some more JOBS



On Fri, Aug 10, 2001 at 04:56:12PM +0200, Steinar Hamre wrote:
> On Fri, Aug 10, 2001 at 07:37:11PM +0530, Nikunj A. Dadhania wrote:

> all_fstypes
> ===========
> UFS
> NFS
> GFS
> LFS
> ...
> 
> a script to convert to C:
> 
> gen_printf_all_fstypes
> ======================
> #! /bin/sh
> sed 's/.*/#ifdef FSTYPE_&\
> 	case FSTYPE_&:\
> 		printf("&\\n");\
> 		break;\
> #endif/' <$1 >$2
> 
> and then in the Makefile:
> 
> printf_all_fstypes.h: all_fstypes gen_printf_all_fstypes
> 	./gen_printf_all_fstypes $< $@

May I suggest a code generating macro instead:

#define PRINT_FS(pref, fs, suf) \
	case pref##fs##suf: \
		printf (#fs "\n"); \
		break;

And in the code:

	switch (statfsbuf.f_type) {
#ifdef FSTYPE_EXT2
		PRINT_FS(FSTYPE_,EXT2,)
#endif
#ifdef EXT2_SUPER_MAGIC
		PRINT_FS(,EXT2,SUER_MAGIC);
#endif
		...
	}

Simpler cleaner and no need to maintain a separate list of supported
filesystems.

Igor



Reply to: