annotate test_fprintf.c @ 0:e3088565a6b8 default tip

*: initial commit kinda dumb, but wifi was out and I was bored. most of this code is shit.
author Paper <paper@tflc.us>
date Wed, 03 Dec 2025 03:04:39 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "printf.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
2
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
3 #include <locale.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
4 #include <stdlib.h> /* malloc */
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
5 #include <limits.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
6 #include <stdint.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
7 #include <limits.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
8 #include <float.h>
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
9
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
10 int test_fprintf(void)
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
11 {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
12 int n, n2;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
13 FILE *f1, *f2;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
14
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
15 f1 = tmpfile();
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
16 f2 = tmpfile();
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
17
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
18 n = my_fprintf(f1,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
19 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
20 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
21 if (n < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
22 fprintf(stderr, "my_fprintf: %s\n", my_strerror(n));
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
23 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
24 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
25 n2 = fprintf(f2,
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
26 #include "test.h"
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
27 );
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
28 if (n2 < 0) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
29 perror("fprintf");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
30 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
31 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
32
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
33 fseek(f1, 0, SEEK_SET);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
34 fseek(f2, 0, SEEK_SET);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
35
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
36 if (n != n2) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
37 fclose(f1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
38 fclose(f2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
39 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
40 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
41
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
42 for (;;) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
43 int c1, c2;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
44
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
45 c1 = fgetc(f1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
46 c2 = fgetc(f2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
47
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
48 if (c1 != c2) {
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
49 fprintf(stderr, "Got different results!!\n");
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
50 fprintf(stderr, " fprintf @ %ld: %c", ftell(f1), c1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
51 fprintf(stderr, " my_fprintf @ %ld: %c", ftell(f2), c2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
52
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
53 fclose(f1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
54 fclose(f2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
55 return -1;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
56 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
57
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
58 if (c1 == EOF)
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
59 break;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
60 }
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
61
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
62 fclose(f1);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
63 fclose(f2);
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
64
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
65 return 0;
e3088565a6b8 *: initial commit
Paper <paper@tflc.us>
parents:
diff changeset
66 }