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

📄 mkisofs.c

📁 一款功能很强的光盘镜象制作工具
💻 C
📖 第 1 页 / 共 5 页
字号:
	{{"hidden-list", required_argument, NULL, OPTION_H_LIST},	'\0', "FILE", "File with list of ISO9660 files with hidden attribute", ONE_DASH},	{{"hide-joliet", required_argument, NULL, OPTION_J_HIDE},	'\0', "GLOBFILE", "Hide Joliet file", ONE_DASH},	{{"hide-joliet-list", required_argument, NULL, OPTION_J_LIST},	'\0', "FILE", "File with list of Joliet files to hide", ONE_DASH},	{{"hide-joliet-trans-tbl", no_argument, NULL, OPTION_HIDE_TRANS_TBL},	'\0', NULL, "Hide TRANS.TBL from Joliet tree", ONE_DASH},	{{"hide-rr-moved", no_argument, NULL, OPTION_HIDE_RR_MOVED},	'\0', NULL, "Rename RR_MOVED to .rr_moved in Rock Ridge tree", ONE_DASH},	{{"gui", no_argument, NULL, OPTION_GUI},	'\0', NULL, "Switch behaviour for GUI", ONE_DASH},	{{NULL, required_argument, NULL, 'i'},	'i', "ADD_FILES", "No longer supported", TWO_DASHES},	{{"input-charset", required_argument, NULL, OPTION_INPUT_CHARSET},	'\0', "CHARSET", "Local input charset for file name conversion", ONE_DASH},	{{"output-charset", required_argument, NULL, OPTION_OUTPUT_CHARSET},	'\0', "CHARSET", "Output charset for file name conversion", ONE_DASH},	{{"iso-level", required_argument, NULL, OPTION_ISO_LEVEL},	'\0', "LEVEL", "Set ISO9660 conformance level (1..3)", ONE_DASH},	{{"joliet", no_argument, NULL, 'J'},	'J', NULL, "Generate Joliet directory information", ONE_DASH},	{{"joliet-long", no_argument, NULL, OPTION_JLONG},	'\0', NULL, "Allow Joliet file names to be 103 Unicode characters", ONE_DASH},	{{"jcharset", required_argument, NULL, OPTION_JCHARSET},	'\0', "CHARSET", "Local charset for Joliet directory information", ONE_DASH},	{{"full-iso9660-filenames", no_argument, NULL, 'l'},	'l', NULL, "Allow full 31 character filenames for ISO9660 names", ONE_DASH},	{{"max-iso9660-filenames", no_argument, NULL, OPTION_MAX_FILENAMES},	'\0', NULL, "Allow 37 character filenames for ISO9660 names (violates ISO9660)", ONE_DASH},	{{"allow-leading-dots", no_argument, NULL, 'L'},	'L', NULL, "Allow ISO9660 filenames to start with '.' (violates ISO9660)", ONE_DASH},	{{"log-file", required_argument, NULL, OPTION_LOG_FILE},	'\0', "LOG_FILE", "Re-direct messages to LOG_FILE", ONE_DASH},	{{"exclude", required_argument, NULL, 'm'},	'm', "GLOBFILE", "Exclude file name", ONE_DASH},	{{"exclude-list", required_argument, NULL, OPTION_X_LIST},	'\0', "FILE", "File with list of file names to exclude", ONE_DASH},	{{"pad", no_argument, NULL, OPTION_PAD},	0, NULL, "Pad outout to a multiple of 32k (default)", ONE_DASH},	{{"no-pad", no_argument, NULL, OPTION_NOPAD},	0, NULL, "Do not pad output to a multiple of 32k", ONE_DASH},	{{"prev-session", required_argument, NULL, 'M'},	'M', "FILE", "Set path to previous session to merge", ONE_DASH},	{{"omit-version-number", no_argument, NULL, 'N'},	'N', NULL, "Omit version number from ISO9660 filename (violates ISO9660)", ONE_DASH},	{{"new-dir-mode", required_argument, NULL, OPTION_NEW_DIR_MODE},	 '\0', "mode", "Mode used when creating new directories.", ONE_DASH},	{{"force-rr", no_argument, NULL, OPTION_FORCE_RR},	0, NULL, "Inhibit automatic Rock Ridge detection for previous session", ONE_DASH},	{{"no-rr", no_argument, NULL, OPTION_NO_RR},	0, NULL, "Inhibit reading of Rock Ridge attributes from previous session", ONE_DASH},	{{"no-split-symlink-components", no_argument, NULL, OPTION_NOSPLIT_SL_COMPONENT},	0, NULL, "Inhibit splitting symlink components", ONE_DASH},	{{"no-split-symlink-fields", no_argument, NULL, OPTION_NOSPLIT_SL_FIELD},	0, NULL, "Inhibit splitting symlink fields", ONE_DASH},	{{"output", required_argument, NULL, 'o'},	'o', "FILE", "Set output file name", ONE_DASH},	{{"path-list", required_argument, NULL, OPTION_P_LIST},	'\0', "FILE", "File with list of pathnames to process", ONE_DASH},	{{"preparer", required_argument, NULL, 'p'},	'p', "PREP", "Set Volume preparer", ONE_DASH},	{{"print-size", no_argument, NULL, OPTION_PRINT_SIZE},	'\0', NULL, "Print estimated filesystem size and exit", ONE_DASH},	{{"publisher", required_argument, NULL, 'P'},	'P', "PUB", "Set Volume publisher", ONE_DASH},	{{"quiet", no_argument, NULL, OPTION_QUIET},	'\0', NULL, "Run quietly", ONE_DASH},	{{"rational-rock", no_argument, NULL, 'r'},	'r', NULL, "Generate rationalized Rock Ridge directory information", ONE_DASH},	{{"rock", no_argument, NULL, 'R'},	'R', NULL, "Generate Rock Ridge directory information", ONE_DASH},#ifdef SORTING	{ {"sort", required_argument, NULL, OPTION_SORT},	'\0', "FILE", "Sort file content locations according to rules in FILE" , ONE_DASH },#endif /* SORTING */	{{"split-output", no_argument, NULL, OPTION_SPLIT_OUTPUT},	'\0', NULL, "Split output into files of approx. 1GB size", ONE_DASH},	{{"sysid", required_argument, NULL, OPTION_SYSID},	'\0', "ID", "Set System ID", ONE_DASH},	{{"translation-table", no_argument, NULL, 'T'},	'T', NULL, "Generate translation tables for systems that don't understand long filenames", ONE_DASH},	{{"table-name", required_argument, NULL, OPTION_TRANS_TBL},	'\0', "TABLE_NAME", "Translation table file name", ONE_DASH},	{{"ucs-level", required_argument, NULL, OPTION_UCS_LEVEL},	'\0', "LEVEL", "Set Joliet UCS level (1..3)", ONE_DASH},#ifdef UDF	{{"udf", no_argument, NULL, OPTION_UDF},	'\0', NULL, "Generate UDF file system", ONE_DASH},#endif#ifdef DVD_VIDEO	{{"dvd-video", no_argument, NULL, OPTION_DVD},	'\0', NULL, "Generate DVD-Video compliant UDF file system", ONE_DASH},#endif	{{"uid", required_argument, NULL, OPTION_UID},	 '\0', "uid", "Make the owner of all files this uid.", 	 ONE_DASH},	{{"untranslated-filenames", no_argument, NULL, 'U'},	'U', NULL, "Allow Untranslated filenames (for HPUX & AIX - violates ISO9660). Forces -l, -d, -L, -N, -relaxed-filenames, -allow-lowercase, -allow-multidot", ONE_DASH},	{{"relaxed-filenames", no_argument, NULL, OPTION_RELAXED_FILENAMES},	'\0', NULL, "Allow 7 bit ASCII except lower case characters (violates ISO9660)", ONE_DASH},	{{"gbk4dos-filenames", no_argument, NULL, OPTION_GBK4DOS_FILENAMES},	'\0', NULL, "Allow 8 bit ASCII GBK standard code characters (violates ISO9660)", ONE_DASH},	{{"gbk4win-filenames", no_argument, NULL, OPTION_GBK4WIN_FILENAMES},	'\0', NULL, "Allow 8 bit ASCII GBK standard code characters (violates ISO9660)", ONE_DASH},	{{"no-iso-translate", no_argument, NULL, OPTION_ISO_TRANSLATE},	'\0', NULL, "Do not translate illegal ISO characters '~', '-' and '#' (violates ISO9660)", ONE_DASH},	{{"allow-lowercase", no_argument, NULL, OPTION_ALLOW_LOWERCASE},	'\0', NULL, "Allow lower case characters in addition to the current character set (violates ISO9660)", ONE_DASH},	{{"allow-multidot", no_argument, NULL, OPTION_ALLOW_MULTIDOT},	'\0', NULL, "Allow more than one dot in filenames (e.g. .tar.gz) (violates ISO9660)", ONE_DASH},	{{"use-fileversion", no_argument, NULL, OPTION_USE_FILEVERSION},	'\0', "LEVEL", "Use file version # from filesystem", ONE_DASH},	{{"verbose", no_argument, NULL, 'v'},	'v', NULL, "Verbose", ONE_DASH},	{{"version", no_argument, NULL, OPTION_PVERSION},	'\0', NULL, "Print the current version", ONE_DASH},	{{"volid", required_argument, NULL, 'V'},	'V', "ID", "Set Volume ID", ONE_DASH},	{{"volset", required_argument, NULL, OPTION_VOLSET},	'\0', "ID", "Set Volume set ID", ONE_DASH},	{{"volset-size", required_argument, NULL, OPTION_VOLSET_SIZE},	'\0', "#", "Set Volume set size", ONE_DASH},	{{"volset-seqno", required_argument, NULL, OPTION_VOLSET_SEQ_NUM},	'\0', "#", "Set Volume set sequence number", ONE_DASH},	{{"old-exclude", required_argument, NULL, 'x'},	'x', "FILE", "Exclude file name(depreciated)", ONE_DASH},	{{"hard-disk-boot", no_argument, NULL, OPTION_HARD_DISK_BOOT},	'\0', NULL, "Boot image is a hard disk image", ONE_DASH},	{{"no-emul-boot", no_argument, NULL, OPTION_NO_EMUL_BOOT},	'\0', NULL, "Boot image is 'no emulation' image", ONE_DASH},	{{"no-boot", no_argument, NULL, OPTION_NO_BOOT},	'\0', NULL, "Boot image is not bootable", ONE_DASH},	{{"boot-load-seg", required_argument, NULL, OPTION_BOOT_LOAD_ADDR},	'\0', "#", "Set load segment for boot image", ONE_DASH},	{{"boot-load-size", required_argument, NULL, OPTION_BOOT_LOAD_SIZE},	'\0', "#", "Set numbers of load sectors", ONE_DASH},	{{"boot-info-table", no_argument, NULL, OPTION_BOOT_INFO_TABLE},	'\0', NULL, "Patch boot image with info table", ONE_DASH},	{{"transparent-compression", no_argument, NULL, 'z'},	'z', NULL, "Enable transparent compression of files", ONE_DASH},#ifdef APPLE_HYB	{{"hfs-type", required_argument, NULL, OPTION_HFS_TYPE},	'\0', "TYPE", "Set HFS default TYPE", ONE_DASH},	{{"hfs-creator", required_argument, NULL, OPTION_HFS_CREATOR},	'\0', "CREATOR", "Set HFS default CREATOR", ONE_DASH},	{{"apple", no_argument, NULL, 'g'},	'g', NULL, "Add Apple ISO9660 extensions", ONE_DASH},	{{"hfs", no_argument, NULL, 'h'},	'h', NULL, "Create ISO9660/HFS hybrid", ONE_DASH},	{{"map", required_argument, NULL, 'H'},	'H', "MAPPING_FILE", "Map file extensions to HFS TYPE/CREATOR", ONE_DASH},	{{"magic", required_argument, NULL, OPTION_MAGIC_FILE},	'\0', "FILE", "Magic file for HFS TYPE/CREATOR", ONE_DASH},	{{"probe", no_argument, NULL, OPTION_PROBE},	'\0', NULL, "Probe all files for Apple/Unix file types", ONE_DASH},	{{"mac-name", no_argument, NULL, OPTION_MACNAME},	'\0', NULL, "Use Macintosh name for ISO9660/Joliet/RockRidge file name",	ONE_DASH},	{{"no-mac-files", no_argument, NULL, OPTION_NOMACFILES},	'\0', NULL, "Do not look for Unix/Mac files (depreciated)", ONE_DASH},	{{"boot-hfs-file", required_argument, NULL, OPTION_BOOT_HFS_FILE},	'\0', "FILE", "Set HFS boot image name", ONE_DASH},	{{"part", no_argument, NULL, OPTION_GEN_PT},	'\0', NULL, "Generate HFS partition table", ONE_DASH},	{{"cluster-size", required_argument, NULL, OPTION_BSIZE},	'\0', "SIZE", "Cluster size for PC Exchange Macintosh files", ONE_DASH},	{{"auto", required_argument, NULL, OPTION_AUTOSTART},	'\0', "FILE", "Set HFS AutoStart file name", ONE_DASH},	{{"no-desktop", no_argument, NULL, OPTION_CREATE_DT},	'\0', NULL, "Do not create the HFS (empty) Desktop files", ONE_DASH},	{{"hide-hfs", required_argument, NULL, OPTION_HFS_HIDE},	'\0', "GLOBFILE", "Hide HFS file", ONE_DASH},	{{"hide-hfs-list", required_argument, NULL, OPTION_HFS_LIST},	'\0', "FILE", "List of HFS files to hide", ONE_DASH},	{{"hfs-volid", required_argument, NULL, OPTION_HFS_VOLID},	'\0', "HFS_VOLID", "Volume name for the HFS partition", ONE_DASH},	{{"icon-position", no_argument, NULL, OPTION_ICON_POS},	'\0', NULL, "Keep HFS icon position", ONE_DASH},	{{"root-info", required_argument, NULL, OPTION_ROOT_INFO},	'\0', "FILE", "finderinfo for root folder", ONE_DASH},	{{"input-hfs-charset", required_argument, NULL, OPTION_HFS_INPUT_CHARSET},	'\0', "CHARSET", "Local input charset for HFS file name conversion", ONE_DASH},	{{"output-hfs-charset", required_argument, NULL, OPTION_HFS_OUTPUT_CHARSET},	'\0', "CHARSET", "Output charset for HFS file name conversion", ONE_DASH},	{{"hfs-unlock", no_argument, NULL, OPTION_HFS_UNLOCK},	'\0', NULL, "Leave HFS Volume unlocked", ONE_DASH},	{{"hfs-bless", required_argument, NULL, OPTION_HFS_BLESS},	'\0', "FOLDER_NAME", "Name of Folder to be blessed", ONE_DASH},	{{"hfs-parms", required_argument, NULL, OPTION_HFS_PARMS},	'\0', "PARAMETERS", "Comma separated list of HFS parameters", ONE_DASH},#ifdef PREP_BOOT	{{"prep-boot", required_argument, NULL, OPTION_PREP_BOOT},	'\0', "FILE", "PReP boot image file -- up to 4 are allowed", ONE_DASH},#endif	/* PREP_BOOT */	{{"cap", no_argument, NULL, OPTION_CAP},	'\0', NULL, "Look for AUFS CAP Macintosh files", TWO_DASHES},	{{"netatalk", no_argument, NULL, OPTION_NETA},	'\0', NULL, "Look for NETATALK Macintosh files", TWO_DASHES},	{{"double", no_argument, NULL, OPTION_DBL},	'\0', NULL, "Look for AppleDouble Macintosh files", TWO_DASHES},	{{"ethershare", no_argument, NULL, OPTION_ESH},	'\0', NULL, "Look for Helios EtherShare Macintosh files", TWO_DASHES},	{{"exchange", no_argument, NULL, OPTION_FE},	'\0', NULL, "Look for PC Exchange Macintosh files", TWO_DASHES},	{{"sgi", no_argument, NULL, OPTION_SGI},	'\0', NULL, "Look for SGI Macintosh files", TWO_DASHES},	{{"macbin", no_argument, NULL, OPTION_MBIN},	'\0', NULL, "Look for MacBinary Macintosh files", TWO_DASHES},	{{"single", no_argument, NULL, OPTION_SGL},	'\0', NULL, "Look for AppleSingle Macintosh files", TWO_DASHES},	{{"ushare", no_argument, NULL, OPTION_USH},	'\0', NULL, "Look for IPT UShare Macintosh files", TWO_DASHES},	{{"xinet", no_argument, NULL, OPTION_XIN},	'\0', NULL, "Look for XINET Macintosh files", TWO_DASHES},	{{"dave", no_argument, NULL, OPTION_DAVE},	'\0', NULL, "Look for DAVE Macintosh files", TWO_DASHES},	{{"sfm", no_argument, NULL, OPTION_SFM},	'\0', NULL, "Look for SFM Macintosh files", TWO_DASHES},	{{"osx-double", no_argument, NULL, OPTION_XDBL},	'\0', NULL, "Look for MacOS X AppleDouble Macintosh files", TWO_DASHES},	{{"osx-hfs", no_argument, NULL, OPTION_XHFS},	'\0', NULL, "Look for MacOS X HFS Macintosh files", TWO_DASHES},#endif	/* APPLE_HYB */};#define OPTION_COUNT (sizeof ld_options / sizeof ld_options[0])#if defined(ultrix) || defined(_AUX_SOURCE)	char    *strdup		__PR((char *s));#endifLOCAL	void	read_rcfile	__PR((char *appname));LOCAL	void	susage		__PR((int excode));LOCAL	void	usage		__PR((int excode));EXPORT	int	iso9660_date	__PR((char *result, time_t crtime));LOCAL	void	hide_reloc_dir	__PR((void));LOCAL	char *	get_pnames	__PR((int argc, char **argv, int opt,					char *pname, int pnsize, FILE * fp));EXPORT	int	main		__PR((int argc, char **argv));EXPORT	char *	findgequal	__PR((char *s));LOCAL	char *	escstrcpy	__PR((char *to, char *from));EXPORT	void *	e_malloc	__PR((size_t size));#if defined(ultrix) || defined(_AUX_SOURCE)char*strdup(s)	char	*s;{	char	*c;	if (c = (char *) malloc(strlen(s) + 1))		strcpy(c, s);	return c;}#endifLOCAL voidread_rcfile(appname)	char		*appname;{	FILE		*rcfile = (FILE *) NULL;	struct rcopts	*rco;	char		*pnt,			*pnt1;	char		linebuffer[256];	static char	rcfn[] = ".mkisofsrc";	char		filename[1000];	int		linum;	strcpy(filename, rcfn);	if (access(filename, R_OK) == 0)		rcfile = fopen(filename, "r");	if (!rcfile && errno != ENOENT)#ifdef	USE_LIBSCHILY		errmsg("Cannot open '%s'.\n", filename);#else		perror(filename);#endif	if (!rcfile) {		pnt = getenv("MKISOFSRC");		if (pnt && strlen(pnt) <= sizeof(filename)) {			strcpy(filename, pnt);			if (access(filename, R_OK) == 0)				rcfile = fopen(filename, "r");			if (!rcfile && errno != ENOENT)#ifdef	USE_LIBSCHILY				errmsg("Cannot open '%s'.\n", filename);#else				perror(filename);#endif		}	}	if (!rcfile) {		pnt = getenv("HOME");		if (pnt && strlen(pnt) + strlen(rcfn) + 2 <=							sizeof(filename)) {			strcpy(filename, pnt);			strcat(filename, "/");			strcat(filename, rcfn);			if (access(filename, R_OK) == 0)				rcfile = fopen(filename, "r");			if (!rcfile && errno != ENOENT)#ifdef	USE_LIBSCHILY				errmsg("Cannot open '%s'.\n", filename);#else				perror(filename);#endif		}	}	if (!rcfile && strlen(appname) + sizeof(rcfn) + 2 <=							sizeof(filename)) {		strcpy(filename, appname);		pnt = strrchr(filename, '/');		if (pnt) {			strcpy(pnt + 1, rcfn);			if (access(filename, R_OK) == 0)				rcfile = fopen(filename, "r");			if (!rcfile && errno != ENOENT)#ifdef	USE_LIBSCHILY				errmsg("Cannot open '%s'.\n", filename);#else				perror(filename);#endif		}	}	if (!rcfile)		return;	if (verbose > 0) {		fprintf(stderr, "Using \"%s\"\n", filename);	}	/* OK, we got it.  Now read in the lines and parse them */	linum = 0;	while (fgets(linebuffer, sizeof(linebuffer), rcfile)) {		char	*name;		char	*name_end;		++linum;		/* skip any leading white space */		pnt = linebuffer;		while (*pnt == ' ' || *pnt == '\t')			++pnt;		/*		 * If we are looking at a # character, this line is a comment.		 */		if (*pnt == '#')			continue;		/*		 * The name should begin in the left margin.  Make sure it is		 * in upper case.  Stop when we see white space or a comment.		 */		name = pnt;		while (*pnt && (isalpha((unsigned char) *pnt) || *pnt == '_')) {			if (islower((unsigned char) *pnt))				*pnt = toupper((unsigned char) *pnt);			pnt++;		}		if (name == pnt) {			fprintf(stderr, "%s:%d: name required\n", filename,					linum);			continue;		}		name_end = pnt;		/* Skip past white space after the name */		while (*pnt == ' ' || *pnt == '\t')			pnt++;		/* silently ignore errors in the rc file. */		if (*pnt != '=') {			fprintf(stderr, "%s:%d: equals sign required after '%.*s'\n",						filename, linum,						name_end-name, name);			continue;		}		/* Skip pas the = sign, and any white space following it */		pnt++;	/* Skip past '=' sign */		while (*pnt == ' ' || *pnt == '\t')			pnt++;		/* now it is safe to NUL terminate the name */		*name_end = 0;		/* Now get rid of trailing newline */		pnt1 = pnt;		while (*pnt1) {			if (*pnt1 == '\n') {				*pnt1 = 0;				break;			}			pnt1++;		};		/* OK, now figure out which option we have */		for (rco = rcopt; rco->tag; rco++) {			if (strcmp(rco->tag, name) == 0) {				*rco->variable = strdup(pnt);				break;			};		}		if (rco->tag == NULL) {			fprintf(stderr, "%s:%d: field name \"%s\" unknown\n",				filename, linum,				name);		}	}	if (ferror(rcfile))#ifdef	USE_LIBSCHILY		errmsg("Read error on '%s'.\n", filename);#else		perror(filename);#endif	fclose(rcfile);}char	*path_table_l = NULL;char	*path_table_m = NULL;char	*jpath_table_l = NULL;char	*jpath_table_m = NULL;int	goof = 0;#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endifLOCAL voidsusage(excode)	int		excode;{	const char	*program_name = "mkisofs";	fprintf(stderr, "Usage: %s [options] file...\n", program_name);	fprintf(stderr, "\nUse %s -help\n", program_name);	fprintf(stderr, "to get a list of valid options.\n");	exit(excode);}LOCAL voidusage(excode)	int		excode;{	const char	*program_name = "mkisofs";#if 0	fprintf(stderr, "Usage:\n");	fprintf(stderr,		"mkisofs [-o outfile] [-R] [-V volid] [-v] [-a] \[-T]\n [-l] [-d] [-V] [-D] [-L] [-p preparer]"		"[-P publisher] [ -A app_id ] [-z] \n \[-b boot_image_name] [-c boot_catalog-name] \[-x path -x path ...] path\n");#endif	int	i;/*	const char **targets, **pp;*/	fprintf(stderr, "Usage: %s [options] file...\n", program_name);	fprintf(stderr, "Options:\n");

⌨️ 快捷键说明

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