~ubuntu-branches/ubuntu/quantal/gnutls26/quantal-security

« back to all changes in this revision

Viewing changes to lib/gl/tests/test-fseek.c

  • Committer: Package Import Robot
  • Author(s): Andreas Metzler
  • Date: 2011-10-01 15:28:13 UTC
  • mfrom: (12.1.20 sid)
  • Revision ID: package-import@ubuntu.com-20111001152813-yygm1c4cxonfxhzy
Tags: 2.12.11-1
* New upstream version.
  + Allow CA importing of 0 certificates to succeed. Closes: #640639
* Add libp11-kit-dev to libgnutls-dev dependencies. (see #643811)
* [20_guiledocstring.diff] guile: Fix docstring extraction with CPP 4.5+.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Test of fseek() function.
 
2
   Copyright (C) 2007-2011 Free Software Foundation, Inc.
 
3
 
 
4
   This program is free software: you can redistribute it and/or modify
 
5
   it under the terms of the GNU General Public License as published by
 
6
   the Free Software Foundation; either version 3 of the License, or
 
7
   (at your option) any later version.
 
8
 
 
9
   This program is distributed in the hope that it will be useful,
 
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
12
   GNU General Public License for more details.
 
13
 
 
14
   You should have received a copy of the GNU General Public License
 
15
   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
16
 
 
17
/* Written by Bruno Haible <bruno@clisp.org>, 2007.  */
 
18
 
 
19
#include <config.h>
 
20
 
 
21
/* None of the files accessed by this test are large, so disable the
 
22
   fseek link warning if the user requested GNULIB_POSIXCHECK.  */
 
23
#define _GL_NO_LARGE_FILES
 
24
#include <stdio.h>
 
25
 
 
26
#include "signature.h"
 
27
SIGNATURE_CHECK (fseek, int, (FILE *, long, int));
 
28
 
 
29
#include "macros.h"
 
30
 
 
31
#ifndef FUNC_UNGETC_BROKEN
 
32
# define FUNC_UNGETC_BROKEN 0
 
33
#endif
 
34
 
 
35
int
 
36
main (int argc, char **argv)
 
37
{
 
38
  /* Assume stdin is non-empty, seekable, and starts with '#!/bin/sh'
 
39
     iff argc > 1.  */
 
40
  int expected = argc > 1 ? 0 : -1;
 
41
  ASSERT (fseek (stdin, 0, SEEK_CUR) == expected);
 
42
  if (argc > 1)
 
43
    {
 
44
      /* Test that fseek discards previously read ungetc data.  */
 
45
      int ch = fgetc (stdin);
 
46
      ASSERT (ch == '#');
 
47
      ASSERT (ungetc (ch, stdin) == ch);
 
48
      ASSERT (fseek (stdin, 2, SEEK_SET) == 0);
 
49
      ch = fgetc (stdin);
 
50
      ASSERT (ch == '/');
 
51
      if (2 < argc)
 
52
        {
 
53
          if (FUNC_UNGETC_BROKEN)
 
54
            {
 
55
              fputs ("Skipping test: ungetc cannot handle arbitrary bytes\n",
 
56
                     stderr);
 
57
              return 77;
 
58
            }
 
59
          /* Test that fseek discards random ungetc data.  */
 
60
          ASSERT (ungetc (ch ^ 0xff, stdin) == (ch ^ 0xff));
 
61
        }
 
62
      ASSERT (fseek (stdin, 0, SEEK_END) == 0);
 
63
      ASSERT (fgetc (stdin) == EOF);
 
64
      /* Test that fseek resets end-of-file marker.  */
 
65
      ASSERT (feof (stdin));
 
66
      ASSERT (fseek (stdin, 0, SEEK_END) == 0);
 
67
      ASSERT (!feof (stdin));
 
68
    }
 
69
  return 0;
 
70
}