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

📄 warn.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
/* $Source: /u/mark/src/pax/RCS/warn.c,v $ * * $Revision: 1.2 $ * * warn.c - miscellaneous user warning routines  * * DESCRIPTION * *	These routines provide the user with various forms of warning *	and informational messages. * * AUTHOR * *     Mark H. Colburn, NAPS International (mark@jhereg.mn.org) * * Sponsored by The USENIX Association for public distribution.  * * Copyright (c) 1989 Mark H. Colburn. * All rights reserved. * * Redistribution and use in source and binary forms are permitted * provided that the above copyright notice is duplicated in all such  * forms and that any documentation, advertising materials, and other  * materials related to such distribution and use acknowledge that the  * software was developed * by Mark H. Colburn and sponsored by The  * USENIX Association.  * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * * $Log:	warn.c,v $ * Revision 1.2  89/02/12  10:06:15  mark * 1.2 release fixes *  * Revision 1.1  88/12/23  18:02:40  mark * Initial revision *  */#ifndef lintstatic char *ident = "$Id: warn.c,v 1.2 89/02/12 10:06:15 mark Exp $";static char *copyright = "Copyright (c) 1989 Mark H. Colburn.\nAll rights reserved.\n";#endif /* ! lint *//* Headers */#include "pax.h"/* Function Prototypes */#ifdef __STDC__static void prsize(FILE *, OFFSET);#else /* !__STDC__ */static void prsize();#endif /* __STDC__ *//* warnarch - print an archive-related warning message and offset * * DESCRIPTION * *	Present the user with an error message and an archive offset at *	which the error occured.   This can be useful for diagnosing or *	fixing damaged archives. * * PARAMETERS * *	char 	*msg	- A message string to be printed for the user. *	OFFSET 	adjust	- An adjustment which is added to the current  *			  archive position to tell the user exactly where  *			  the error occurred. */#ifdef __STDC__void warnarch(char *msg, OFFSET adjust)#else void warnarch(msg, adjust)char           *msg;OFFSET          adjust;#endif{    fprintf(stderr, "%s: [offset ", myname);    prsize(stderr, total - adjust);    fprintf(stderr, "]: %s\n", msg);}/* strerror - return pointer to appropriate system error message * * DESCRIPTION * *	Get an error message string which is appropriate for the setting *	of the errno variable. * * RETURNS * *	Returns a pointer to a string which has an appropriate error *	message for the present value of errno.  The error message *	strings are taken from sys_errlist[] where appropriate.  If an *	appropriate message is not available in sys_errlist, then a *	pointer to the string "Unknown error (errno <errvalue>)" is  *	returned instead. */#ifdef __STDC__char *strerror(void)#elsechar *strerror()#endif{#ifdef _POSIX_SOURCE#undef strerror    return (strerror(errno));#else    static char     msg[40];		/* used for "Unknown error" messages */    if (errno > 0 && errno < sys_nerr) {	return (sys_errlist[errno]);    }    sprintf(msg, "Unknown error (errno %d)", errno);    return (msg);#endif}/* prsize - print a file offset on a file stream * * DESCRIPTION * *	Prints a file offset to a specific file stream.  The file offset is *	of the form "%dm+%dk+%d", where the number preceeding the "m" and *	the "k" stand for the number of Megabytes and the number of *	Kilobytes, respectivley, which have been processed so far. * * PARAMETERS * *	FILE  *stream	- Stream which is to be used for output  *	OFFSET size	- Current archive position to be printed on the output  *			  stream in the form: "%dm+%dk+%d". * */#ifdef __STDC__static void prsize(FILE *stream, OFFSET size)#elsestatic void prsize(stream, size)FILE           *stream;		/* stream which is used for output */OFFSET          size;		/* current archive position to be printed */#endif{    OFFSET          n;    if (n = (size / (1024L * 1024L))) {	fprintf(stream, "%ldm+", n);	size -= n * 1024L * 1024L;    }    if (n = (size / 1024L)) {	fprintf(stream, "%ldk+", n);	size -= n * 1024L;    }    fprintf(stream, "%ld", size);}/* fatal - print fatal message and exit * * DESCRIPTION * *	Fatal prints the program's name along with an error message, then *	exits the program with a non-zero return code. * * PARAMETERS * *	char 	*why	- description of reason for termination  *		 * RETURNS * *	Returns an exit code of 1 to the parent process. */#ifdef __STDC__void fatal(char *why)#elsevoid fatal(why)char           *why;		/* description of reason for termination */#endif{    fprintf(stderr, "%s: %s\n", myname, why);    exit(1);}/* warn - print a warning message * * DESCRIPTION * *	Print an error message listing the program name, the actual error *	which occurred and an informational message as to why the error *	occurred on the standard error device.  The standard error is *	flushed after the error is printed to assure that the user gets *	the message in a timely fasion. * * PARAMETERS * *	char *what	- Pointer to string describing what failed. *	char *why	- Pointer to string describing why did it failed. */#ifdef __STDC__void warn(char *what, char *why)#elsevoid warn(what, why)char           *what;		/* message as to what the error was */char           *why;		/* explanation why the error occurred */#endif{    fprintf(stderr, "%s: %s : %s\n", myname, what, why);    fflush(stderr);}

⌨️ 快捷键说明

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