⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util.c

📁 LINUX1.0内核源代码,学习LINUX编程的一定要看。
💻 C
字号:
/* *  linux/fs/isofs/util.c * *  The special functions in the file are numbered according to the section *  of the iso 9660 standard in which they are described.  isonum_733 will *  convert numbers according to section 7.3.3, etc. * *  isofs special functions.  This file was lifted in its entirety from * the bsd386 iso9660 filesystem, by Pace Williamson. */intisonum_711 (char * p){	return (*p & 0xff);}intisonum_712 (char * p){	int val;		val = *p;	if (val & 0x80)		val |= 0xffffff00;	return (val);}intisonum_721 (char * p){	return ((p[0] & 0xff) | ((p[1] & 0xff) << 8));}intisonum_722 (char * p){	return (((p[0] & 0xff) << 8) | (p[1] & 0xff));}intisonum_723 (char * p){#if 0	if (p[0] != p[3] || p[1] != p[2]) {		fprintf (stderr, "invalid format 7.2.3 number\n");		exit (1);	}#endif	return (isonum_721 (p));}intisonum_731 (char * p){	return ((p[0] & 0xff)		| ((p[1] & 0xff) << 8)		| ((p[2] & 0xff) << 16)		| ((p[3] & 0xff) << 24));}intisonum_732 (char * p){	return (((p[0] & 0xff) << 24)		| ((p[1] & 0xff) << 16)		| ((p[2] & 0xff) << 8)		| (p[3] & 0xff));}intisonum_733 (char * p){#if 0	int i;	for (i = 0; i < 4; i++) {		if (p[i] != p[7-i]) {			fprintf (stderr, "bad format 7.3.3 number\n");			exit (1);		}	}#endif	return (isonum_731 (p));}/* We have to convert from a MM/DD/YY format to the unix ctime format.  We have to   take into account leap years and all of that good stuff.  Unfortunately, the kernel   does not have the information on hand to take into account daylight savings time,   so there will be cases (roughly half the time) where the dates are off by one hour. */int iso_date(char * p, int flag){	int year, month, day, hour ,minute, second, tz;	int crtime, days, i;	year = p[0] - 70;	month = p[1];	day = p[2];	hour = p[3];	minute = p[4];	second = p[5];	if (flag == 0) tz = p[6]; /* High sierra has no time zone */	else tz = 0;		if (year < 0) {		crtime = 0;	} else {		int monlen[12] = {31,28,31,30,31,30,31,31,30,31,30,31};		days = year * 365;		if (year > 2)			days += (year+1) / 4;		for (i = 1; i < month; i++)			days += monlen[i-1];		if (((year+2) % 4) == 0 && month > 2)			days++;		days += day - 1;		crtime = ((((days * 24) + hour) * 60 + minute) * 60)			+ second;				/* sign extend */		if (tz & 0x80)			tz |= (-1 << 8);				/* timezone offset is unreliable on some disks */		if (-48 <= tz && tz <= 52)			crtime += tz * 15 * 60;	}	return crtime;}			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -