Line data Source code
1 : /* t-sysutils.c - Module test for sysutils.c
2 : * Copyright (C) 2007 Free Software Foundation, Inc.
3 : *
4 : * This file is part of GnuPG.
5 : *
6 : * GnuPG is free software; you can redistribute it and/or modify
7 : * it under the terms of the GNU General Public License as published by
8 : * the Free Software Foundation; either version 3 of the License, or
9 : * (at your option) any later version.
10 : *
11 : * GnuPG is distributed in the hope that it will be useful,
12 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 : * GNU General Public License for more details.
15 : *
16 : * You should have received a copy of the GNU General Public License
17 : * along with this program; if not, see <https://www.gnu.org/licenses/>.
18 : */
19 :
20 : #include <config.h>
21 : #include <stdio.h>
22 : #include <stdlib.h>
23 :
24 : #include "util.h"
25 : #include "sysutils.h"
26 :
27 : #ifdef HAVE_W32CE_SYSTEM
28 : # define rewind(f) do { fseek (f, 0, SEEK_SET); clearerr (f); } while (0)
29 : #endif
30 :
31 : #define pass() do { ; } while(0)
32 : #define fail(a) do { fprintf (stderr, "%s:%d: test %d failed\n",\
33 : __FILE__,__LINE__, (a)); \
34 : errcount++; \
35 : } while(0)
36 :
37 : static int verbose;
38 : static int errcount;
39 :
40 :
41 : static void
42 1 : test_gnupg_tmpfile (void)
43 : {
44 : FILE *fparr[10];
45 : int fparridx;
46 : int idx;
47 : FILE *fp;
48 : char buffer[100];
49 :
50 : #define ASTRING "fooooooooooooooo\n" /* Needs to be shorter than BUFFER. */
51 :
52 11 : for (fparridx=0; fparridx < DIM (fparr); fparridx++)
53 : {
54 10 : fp = gnupg_tmpfile ();
55 10 : fparr[fparridx] = fp;
56 10 : if (!fp)
57 0 : fail (fparridx);
58 : else
59 : {
60 10 : fputs ( ASTRING, fp);
61 10 : rewind (fp);
62 10 : if (!fgets (buffer, sizeof (buffer), fp))
63 0 : fail (fparridx);
64 10 : if (strcmp (buffer, ASTRING))
65 0 : fail (fparridx);
66 10 : if (fgets (buffer, sizeof (buffer), fp))
67 0 : fail (fparridx);
68 : }
69 : }
70 11 : for (idx=0; idx < fparridx; idx++)
71 : {
72 10 : if (fparr[idx])
73 10 : fclose (fparr[idx]);
74 : }
75 1 : }
76 :
77 :
78 :
79 : int
80 1 : main (int argc, char **argv)
81 : {
82 1 : if (argc > 1 && !strcmp (argv[1], "--verbose"))
83 0 : verbose = 1;
84 :
85 1 : test_gnupg_tmpfile ();
86 : /* Fixme: Add tests for setenv and unsetenv. */
87 :
88 1 : return !!errcount;
89 : }
|