This file is indexed.

/usr/lib/emboss/include/ajsql.h is in emboss-lib 6.6.0+dfsg-1.

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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
/* @include ajsql *************************************************************
**
** AJAX SQL functions
**
** @author Copyright (C) 2006 Michael K. Schuster
** @version $Revision: 1.14 $
** @modified $Date: 2011/10/18 14:23:40 $ by $Author: rice $
** @@
**
** This library is free software; you can redistribute it and/or
** modify it under the terms of the GNU Lesser General Public
** License as published by the Free Software Foundation; either
** version 2.1 of the License, or (at your option) any later version.
**
** This library is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
** Lesser General Public License for more details.
**
** You should have received a copy of the GNU Lesser General Public
** License along with this library; if not, write to the Free Software
** Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
** MA  02110-1301,  USA.
**
******************************************************************************/

#ifndef AJSQL_H
#define AJSQL_H

/* ========================================================================= */
/* ============================= include files ============================= */
/* ========================================================================= */

#include "ajdefine.h"
#include "ajstr.h"
#include "ajarr.h"
#include "ajtime.h"

AJ_BEGIN_DECLS




/* ========================================================================= */
/* =============================== constants =============================== */
/* ========================================================================= */




/* ========================================================================= */
/* ============================== public data ============================== */
/* ========================================================================= */




/* @data AjPVoid **************************************************************
**
** Ajax address object.
**
** Holds a void array with additional data.
** The length is known and held internally.
**
** Saves on length calculation, and allows growth in reserved memory without
** changing the pointer in the calling routine.
**
** AjPVoid is implemented as a pointer to a C data structure.
**
** @alias AjSVoid
** @alias AjOVoid
**
** @new    ajVoidNew Default constructor
** @new    ajVoidNewRes Constructor with reserved size
** @delete ajVoidDel Default destructor
** @cast   ajVoidGet Retrieve a pointer from an array
** @modify ajVoidPut Load a pointer array element
**
** @attr Res [ajuint] Reserved space in case of extension
** @attr Len [ajuint] Actual length used
** @attr Ptr [void**] Array of void pointers
** @@
******************************************************************************/

typedef struct AjSVoid
{
    ajuint Res;
    ajuint Len;
    void **Ptr;
} AjOVoid;

#define AjPVoid AjOVoid*




/* @enum AjESqlconnectionClient ***********************************************
**
** AJAX SQL Connection client library enumeration.
**
** @alias AjOSqlconnectionClient
**
** @value ajESqlconnectionClientNULL       Null
** @value ajESqlconnectionClientMySQL      MySQL client
** @value ajESqlconnectionClientPostgreSQL PostgreSQL client
******************************************************************************/

typedef enum AjOSqlconnectionClient
{
    ajESqlconnectionClientNULL,
    ajESqlconnectionClientMySQL,
    ajESqlconnectionClientPostgreSQL
} AjESqlconnectionClient;




/* @data AjPSqlconnection *****************************************************
**
** AJAX SQL Connection.
**
** Holds the client type and a pointer to a SQL client library-specific
** connection object.
**
** @alias AjSSqlconnection
** @alias AjOSqlconnection
**
** @attr Pconnection [void*]  SQL client library-specific connection object
**                            (MYSQL*) for the MySQL client library
**                            (PGconn*) for the PostgreSQL client library
** @attr Client [AjESqlconnectionClient] Client library
** @attr Use [ajuint] Use counter
** @@
******************************************************************************/

typedef struct AjSSqlconnection
{
    void *Pconnection;
    AjESqlconnectionClient Client;
    ajuint Use;
} AjOSqlconnection;

#define AjPSqlconnection AjOSqlconnection*




/* @data AjPSqlstatement ******************************************************
**
** AJAX SQL Statement.
**
** Holds pointers to an AJAX SQL Connection and to a client library-specific
** result object.
**
** @alias AjSSqlstatement
** @alias AjOSqlstatement
**
** @attr Sqlconnection [AjPSqlconnection] AJAX SQL Connection.
** @attr Presult [void*] SQL client library-specific result object
**                        (MYSQL_RES*) for the MySQL client library
**                        (PGresult*) for the PostgreSQL client library
** @attr AffectedRows [ajulong] Number of rows affected by non-SELECT SQL
**                              statements
** @attr SelectedRows [ajulong] Number of rows selected by SELECT-like SQL
**                              statements
** @attr Columns [ajuint] Number of columns returned by SELECT-like statements
** @attr Use [ajuint] Use counter
** @@
******************************************************************************/

typedef struct AjSSqlstatement
{
    AjPSqlconnection Sqlconnection;
    void *Presult;
    ajulong AffectedRows;
    ajulong SelectedRows;
    ajuint Columns;
    ajuint Use;
} AjOSqlstatement;

#define AjPSqlstatement AjOSqlstatement*




/* @data AjPSqlrow ************************************************************
**
** AJAX SQL Result Row.
**
** Holds an AjPChar array of C-type character strings and an AjLong array of
** data lengths for each column data values in SQL client library-specific
** result objects.
**
** @alias AjSSqlrow
** @alias AjOSqlrow
**
** @attr Values [AjPVoid] AJAX Character Array of SQL column values
** @attr Lengths [AjPLong] AJAX Long Integer Array of SQL column value lengths
** @attr Columns [ajuint] Number of columns per row
** @attr Current [ajuint] Current column in column interactions
** @@
******************************************************************************/

typedef struct AjSSqlrow
{
    AjPVoid Values;
    AjPLong Lengths;
    ajuint Columns;
    ajuint Current;
} AjOSqlrow;

#define AjPSqlrow AjOSqlrow*




/* @data AjISqlrow ************************************************************
**
** AJAX SQL Row Iterator.
**
** Allows iteration over AJAX SQL Rows of an AJAX SQL Statement.
**
** @alias AjSSqlrowiter
** @alias AjOSqlrowiter
** @alias AjPSqlrowiter
**
** @attr Sqlstatement [AjPSqlstatement] AJAX SQL Statement
** @attr Sqlrow [AjPSqlrow] AJAX SQL Result Row
** @attr Current [ajulong] Current row number
** @@
******************************************************************************/

typedef struct AjSSqlrowiter
{
    AjPSqlstatement Sqlstatement;
    AjPSqlrow Sqlrow;
    ajulong Current;
} AjOSqlrowiter;

#define AjISqlrow AjOSqlrowiter*
#define AjPSqlrowiter AjOSqlrowiter*




/* ========================================================================= */
/* =========================== public functions ============================ */
/* ========================================================================= */




/*
** Prototype definitions
*/

AjBool ajSqlInit(void);

void ajSqlExit(void);

/* AJAX SQL Connection */

AjPSqlconnection ajSqlconnectionNewData(AjESqlconnectionClient client,
                                        const AjPStr user,
                                        const AjPStr password,
                                        const AjPStr host,
                                        const AjPStr port,
                                        const AjPStr socketfile,
                                        const AjPStr database);

AjPSqlconnection ajSqlconnectionNewRef(AjPSqlconnection sqlc);

void ajSqlconnectionDel(AjPSqlconnection* Psqlc);

AjESqlconnectionClient ajSqlconnectionGetClient(const AjPSqlconnection sqlc);

ajuint ajSqlconnectionGetUse(const AjPSqlconnection sqlc);

AjBool ajSqlconnectionTrace(const AjPSqlconnection sqlc, ajuint level);

AjBool ajSqlconnectionEscapeC(const AjPSqlconnection sqlc,
                              char **Ptxt,
                              const AjPStr str);

AjBool ajSqlconnectionEscapeS(const AjPSqlconnection sqlc,
                              AjPStr *Pstr,
                              const AjPStr str);

AjESqlconnectionClient ajSqlconnectionClientFromStr(const AjPStr client);

const char* ajSqlconnectionClientToChar(AjESqlconnectionClient client);

/* AJAX SQL Statement */

AjPSqlstatement ajSqlstatementNewRun(AjPSqlconnection sqlc,
                                     const AjPStr statement);

AjPSqlstatement ajSqlstatementNewRef(AjPSqlstatement sqls);

void ajSqlstatementDel(AjPSqlstatement* Psqls);

ajulong ajSqlstatementGetAffectedrows(const AjPSqlstatement sqls);

ajulong ajSqlstatementGetSelectedrows(const AjPSqlstatement sqls);

ajuint ajSqlstatementGetColumns(const AjPSqlstatement sqls);

ajuint ajSqlstatementGetIdentifier(const AjPSqlstatement sqls);

/* AJAX SQL Row Iterator */

AjISqlrow ajSqlrowiterNew(AjPSqlstatement sqls);

void ajSqlrowiterDel(AjISqlrow *Psqli);

AjBool ajSqlrowiterDone(const AjISqlrow sqli);

AjPSqlrow ajSqlrowiterGet(AjISqlrow sqli);

AjBool ajSqlrowiterRewind(AjISqlrow sqli);

/* AJAX SQL Row */

AjPSqlrow ajSqlrowNew(ajuint columns);

void ajSqlrowDel(AjPSqlrow *Psqlr);

AjPVoid ajSqlrowGetValues(const AjPSqlrow sqlr);

AjPLong ajSqlrowGetLengths(const AjPSqlrow sqlr);

ajuint ajSqlrowGetColumns(const AjPSqlrow sqlr);

ajuint ajSqlrowGetCurrent(const AjPSqlrow sqlr);

AjBool ajSqlcolumnGetValue(AjPSqlrow sqlr, void **Pvalue,
                           ajulong *Plength);

AjBool ajSqlcolumnToStr(AjPSqlrow sqlr, AjPStr *Pvalue);

AjBool ajSqlcolumnToInt(AjPSqlrow sqlr, ajint *Pvalue);

AjBool ajSqlcolumnToUint(AjPSqlrow sqlr, ajuint *Pvalue);

AjBool ajSqlcolumnToLong(AjPSqlrow sqlr, ajlong *Pvalue);

AjBool ajSqlcolumnToUlong(AjPSqlrow sqlr, ajulong *Pvalue);

AjBool ajSqlcolumnToFloat(AjPSqlrow sqlr, float *Pvalue);

AjBool ajSqlcolumnToDouble(AjPSqlrow sqlr, double *Pvalue);

AjBool ajSqlcolumnToBool(AjPSqlrow sqlr, AjBool *Pvalue);

AjBool ajSqlcolumnToTime(AjPSqlrow sqlr, AjPTime *Pvalue);

AjBool ajSqlcolumnRewind(AjPSqlrow sqlr);

AjBool ajSqlcolumnNumberGetValue(const AjPSqlrow sqlr,
                                 ajuint column,
                                 void **Pvalue,
                                 ajulong *Plength);

AjBool ajSqlcolumnNumberToStr(const AjPSqlrow sqlr, ajuint column,
                              AjPStr *Pvalue);

AjBool ajSqlcolumnNumberToInt(const AjPSqlrow sqlr, ajuint column,
                              ajint *Pvalue);

AjBool ajSqlcolumnNumberToUint(const AjPSqlrow sqlr, ajuint column,
                               ajuint *Pvalue);

AjBool ajSqlcolumnNumberToLong(const AjPSqlrow sqlr, ajuint column,
                               ajlong *Pvalue);

AjBool ajSqlcolumnNumberToFloat(const AjPSqlrow sqlr, ajuint column,
                                float *Pvalue);

AjBool ajSqlcolumnNumberToDouble(const AjPSqlrow sqlr, ajuint column,
                                 double *Pvalue);

AjBool ajSqlcolumnNumberToBool(const AjPSqlrow sqlr, ajuint column,
                               AjBool *Pvalue);

AjBool ajSqlcolumnNumberToTime(const AjPSqlrow sqlr, ajuint column,
                               AjPTime *Pvalue);

AjBool ajSqlcolumnNumberToUlong(const AjPSqlrow sqlr, ajuint column,
                                ajulong *Pvalue);

AjBool ajSqlcolumnNumberIsDefined(const AjPSqlrow sqlr, ajuint column);

/* AJAX Void Array */

AjPVoid ajVoidNew(void);

AjPVoid ajVoidNewRes(ajuint size);

void ajVoidDel(AjPVoid *thys);

void *ajVoidGet(const AjPVoid thys, ajuint elem);

ajuint ajVoidLen(const AjPVoid thys);

AjBool ajVoidPut(AjPVoid *thys, ajuint elem, void *v);

/*
** End of prototype definitions
*/




AJ_END_DECLS

#endif /* !AJSQL_H */