This file is indexed.

/usr/include/gdcm-2.2/socketxx/sig.h is in libgdcm2-dev 2.2.4-1.1ubuntu4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// socket++ library. sig.h
// Copyright (C) 1992-1996 Gnanasekaran Swaminathan <gs4t@virginia.edu>
//
// Permission is granted to use at your own risk and distribute this software
// in source and  binary forms provided  the above copyright notice and  this
// paragraph are  preserved on all copies.  This software is provided "as is"
// with no express or implied warranty.

#ifndef SIG_H
#define SIG_H

#include <list>
#include <map>
#include <algorithm>
#ifndef WIN32
#include <sys/signal.h>

#else
#include <windows.h>
#include <wininet.h>
#endif

//from http://bugs.scribus.net/view.php?id=2213
#ifndef sigset_t
  #define sigset_t int
#endif
#ifndef sigemptyset
  #define sigemptyset(sig)
#endif
#ifndef sigaddset
  #define sigaddset( set, sig)
#endif
#ifndef sigprocmask
  #define sigprocmask(a, b, c)
#endif

// all signal handlers must be derived from
// class sig::hnd. class signal will
// maintain a list of pointers to sig::hnd
// objects for a signal. If a signal occurs,
// all sig::hnds associated with the
// signal are invoked.

// sig::hnd object will insert itself into
// the signal handler list for a signo. Its
// dtor will delete the signal handler object
// from the signal handler list for a signo.
// Thus if a user wants to add a signal handler,
// all that needs to be done is to simply
// instantiate the signal handler object,
// and if the user wants to remove the signal
// handler, all that needs to done is to
// delete the object and its dtor will remove
// itself from the signal handler list.

// Note: you cannot mix sig with other means
//       of setting signal handlers.

class sig;
class siginit;
class sigerr {};

class sig {
public:
  friend class siginit;

  class hnd {
    int signo;
  public:
    hnd (int signo);
    virtual ~hnd ();
    virtual void operator () (int s) = 0;
  };

  typedef hnd* phnd;
  typedef std::list<phnd> phndlist;
  typedef std::map<int, phndlist, std::less<int> > sigmap;
private:
  sigmap smap;

  sig () {}
  ~sig () {}
public:

  // add signal handler h for signal signo
  // return true on success. false otherwise.
  bool set (int signo, hnd* h);

  // remove signal handler h for signal signo
  // return true on success. false otherwise.
  // Note: the user needs to delete h.
  bool unset (int signo, hnd* h);

  // remove all signal handers for signal signo
  void unset (int signo);

  // mask signal signo. Prevent signo from being seen
  // by our process. Note: not all signals can be
  // blocked.
  void mask (int signo) const;

  // block signal signo_b when inside a signo_a handler
  // Note: the process will see signo_b once signo_a handler
  // is finished
  void mask (int signo_a, int signo_b) const;

  // unmask signal signo. Enable signo to be seen by
  // our process.
  void unmask (int signo) const;

  // unblock signal signo_b when inside a signo_a handler
  void unmask (int signo_a, int signo_b) const;

  // is signal signo pending?
  bool ispending (int signo) const;

  // set of signals pending
  sigset_t pending () const;

  // make some system calls to terminate after they are
  // interrupted (set == false). Otherwise resume system
  // call (set == true). Not available on all systems.
  void sysresume (int signo, bool set) const;

  // process a software signal signo
  void kill (int signo);

  static sig& nal; // sig::nal is the only object of class sig
};

class siginit {
  friend class sig;
  static siginit init;
  sig* s;
public:
  siginit (): s (0) { if (this == &init) s = new sig; }
  ~siginit () { if (this == &init) delete s; }
};

#endif // SIG_H