-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathwrapper.c
More file actions
93 lines (78 loc) · 2 KB
/
Copy pathwrapper.c
File metadata and controls
93 lines (78 loc) · 2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "fatal.h"
#include "wrapper.h"
/************
* stdlib.h *
************/
extern void *smalloc(size_t siz) {
void *ret = malloc(siz);
if (!ret) fatal("proofread: malloc error.");
return ret;
}
extern void *srealloc(void *ptr, size_t siz) {
ptr = realloc(ptr, siz);
if (!ptr) fatal("proofread: realloc error.");
return ptr;
}
extern void *scalloc(size_t n, size_t siz) {
void *ret = calloc(n, siz);
if (!ret) fatal("proofread: calloc error.");
return ret;
}
/***********
* stdio.h *
***********/
extern FILE *sfopen(const char *filename, const char *mode) {
FILE *fp = fopen(filename, mode);
if (!fp) vfatal("unable to open the file: %s.", filename);
return fp;
}
extern void sfclose(FILE *fp) {
if (fclose(fp) != EOF)
return;
fatal("proofread: unable to close a stream.");
}
#if 0
extern FILE *stmpfile(void) {
FILE *fp = tmpfile();
if (!fp) fatal("proofread: unable to open a temporary file.");
return fp;
}
#endif
extern void sremove(const char *filename) {
if (!remove(filename))
return;
vfatal("proofread: unable to remove the file: %s.", filename);
}
extern void srename(const char *old, const char *new) {
if (!rename(old, new))
return;
vfatal("proofread: unable to rename %s to %s.", old, new);
}
extern void sfputs(FILE *stream, const char *line) {
if (fputs(line, stream) == EOF)
fatal("proofread: fputs error.");
}
extern void sputs(const char *line) {
if (puts(line) == EOF)
fatal("proofread: puts error.");
}
extern void sfputc(FILE *stream, char c) {
if (putc(c, stream) == EOF)
fatal("proofread: fputc error.");
}
extern void ffmtwrt(FILE *stream, const char *format, ...) {
va_list ap;
int ret;
va_start(ap, format);
ret = vfprintf(stream, format, ap);
if (ret < 0) exit(EXIT_FAILURE);
va_end(ap);
}
extern void fmtwrt(const char *format, ...) {
va_list ap;
int ret;
va_start(ap, format);
ret = vprintf(format, ap);
if (ret < 0) exit(EXIT_FAILURE);
va_end(ap);
}