Add config.sub update to %configure macro
[platform/upstream/rpm.git] / rpmio / rpmio.h
1 #ifndef H_RPMIO
2 #define H_RPMIO
3
4 /** \ingroup rpmio
5  * \file rpmio/rpmio.h
6  *
7  * RPM I/O API (Fd_t is RPM equivalent to libc's FILE)
8  */
9
10 #include <sys/types.h>
11 #include <sys/stat.h>
12 #include <stdio.h>
13 #include <stdlib.h>
14 #include <unistd.h>
15
16 #include <rpm/rpmtypes.h>
17 #include <rpm/rpmsw.h>
18
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22
23 /** \ingroup rpmio
24  */
25 typedef const struct FDIO_s * FDIO_t;
26
27
28 /** \ingroup rpmio
29  * \name RPMIO Interface.
30  */
31
32 /** \ingroup rpmio
33  * strerror(3) clone.
34  */
35 const char * Fstrerror(FD_t fd);
36
37 /** \ingroup rpmio
38  * fread(3) clone.
39  */
40 ssize_t Fread(void * buf, size_t size, size_t nmemb, FD_t fd);
41
42 /** \ingroup rpmio
43  * fwrite(3) clone.
44  */
45 ssize_t Fwrite(const void * buf, size_t size, size_t nmemb, FD_t fd);
46
47 /** \ingroup rpmio
48  * fseek(3) clone.
49  */
50 int Fseek(FD_t fd, off_t offset, int whence);
51
52 /** \ingroup rpmio
53  * ftell(3) clone.
54  */
55 off_t Ftell(FD_t fd);
56
57 /** \ingroup rpmio
58  * fclose(3) clone.
59  */
60 int Fclose( FD_t fd);
61
62 /** \ingroup rpmio
63  */
64 FD_t    Fdopen(FD_t ofd, const char * fmode);
65
66 /** \ingroup rpmio
67  * fopen(3) clone.
68  */
69 FD_t    Fopen(const char * path,
70                         const char * fmode);
71
72
73 /** \ingroup rpmio
74  * fflush(3) clone.
75  */
76 int Fflush(FD_t fd);
77
78 /** \ingroup rpmio
79  * ferror(3) clone.
80  */
81 int Ferror(FD_t fd);
82
83 /** \ingroup rpmio
84  * fileno(3) clone.
85  */
86 int Fileno(FD_t fd);
87
88 /** \ingroup rpmio
89  * fcntl(2) clone.
90  */
91 int Fcntl(FD_t fd, int op, void *lip);
92
93 /** \ingroup rpmio
94  * Get informative description (eg file name) from fd for diagnostic output.
95  */
96 const char * Fdescr(FD_t fd);
97
98 /** \ingroup rpmio
99  * \name RPMIO Utilities.
100  */
101
102 /** \ingroup rpmio
103  */
104 off_t   fdSize(FD_t fd);
105
106 /** \ingroup rpmio
107  */
108 FD_t fdDup(int fdno);
109
110 /** \ingroup rpmio
111  */
112 FD_t fdLink(FD_t fd);
113
114 /** \ingroup rpmio
115  */
116 FD_t fdFree(FD_t fd);
117
118 /**
119  */
120 off_t ufdCopy(FD_t sfd, FD_t tfd);
121
122 /** \ingroup rpmio
123  * Identify per-desciptor I/O operation statistics.
124  */
125 typedef enum fdOpX_e {
126     FDSTAT_READ         = 0,    /*!< Read statistics index. */
127     FDSTAT_WRITE        = 1,    /*!< Write statistics index. */
128     FDSTAT_SEEK         = 2,    /*!< Seek statistics index. */
129     FDSTAT_CLOSE        = 3,    /*!< Close statistics index */
130     FDSTAT_DIGEST       = 4,    /*!< Digest statistics index. */
131     FDSTAT_MAX          = 5
132 } fdOpX;
133
134 /** \ingroup rpmio
135  *
136  */
137 rpmop fdOp(FD_t fd, fdOpX opx);
138
139 #ifdef __cplusplus
140 }
141 #endif
142
143 #endif  /* H_RPMIO */