Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
eutil.c
#include "eutil.h" |
#include <stdarg.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <string.h> |
const char *program_name = NULL; |
void |
set_program_name(const char *p) |
{ |
char *s; |
s = strrchr(p, '/'); |
program_name = (s != 0) ? (s + 1) : p; |
} |
int |
int_value(int c, char *arg, void (*usage)(void)) |
{ |
char *end; |
int value; |
value = strtol(arg, &end, 10); |
if (end == arg || end[0] != '\0') { |
if (c > 0) { |
fprintf(stderr, "%s: invalid argument for `%c' flag: `%s'.\n", |
program_name, c, arg); |
} else { |
fprintf(stderr, "%s: invalid argument: `%s'.\n", |
program_name, arg); |
} |
if (usage != NULL) |
(*usage)(); |
exit(EXIT_FAILURE); |
} |
return value; |
} |
float |
float_value(int c, const char *arg, void (*usage)(void)) |
{ |
float v; |
char *end; |
v = strtod(arg, &end); |
if (end == arg || end[0] != '\0') { |
fprintf(stderr, "%s: invalid argument for `-%c' flag: `%s'.\n", |
program_name, c, arg); |
if (usage != NULL) |
(*usage)(); |
exit(EXIT_FAILURE); |
} |
return v; |
} |
void |
invalid_number_of_arguments(void (*usage)(void)) |
{ |
error("invalid number of arguments."); |
if (usage != NULL) |
(*usage)(); |
exit(EXIT_FAILURE); |
} |
void |
eprintf(const char *format, ...) |
{ |
va_list args; |
va_start(args, format); |
vfprintf(stderr, format, args); |
va_end(args); |
} |
void |
error(const char *format, ...) |
{ |
va_list args; |
va_start(args, format); |
if (program_name != NULL) |
fprintf(stderr, "%s: ", program_name); |
vfprintf(stderr, format, args); |
fprintf(stderr, "\n"); |
va_end(args); |
} |
void |
fatal(const char *format, ...) |
{ |
va_list args; |
va_start(args, format); |
if (program_name != NULL) |
fprintf(stderr, "%s: ", program_name); |
vfprintf(stderr, format, args); |
fprintf(stderr, "\n"); |
va_end(args); |
exit(EXIT_FAILURE); |
} |
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14