File: db1.expect

package info (click to toggle)
splint 3.1.2.dfsg1-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, squeeze, wheezy
  • size: 12,908 kB
  • ctags: 15,816
  • sloc: ansic: 150,306; yacc: 3,463; sh: 3,426; makefile: 2,218; lex: 412
file content (680 lines) | stat: -rw-r--r-- 36,848 bytes parent folder | download | duplicates (8)
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
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680

employee.c: (in function employee_equal)
employee.c:25: Function strncmp expects arg 3 to be size_t gets int:
                  maxEmployeeName
employee.c: (in function employee_sprint)
employee.c:33: Buffer overflow possible with sprintf.  Recommend using snprintf
                  instead: sprintf
empset.c: (in function empset_insert)
empset.c:28: Variable er declared but not used
empset.c: (in function empset_disjointUnion)
empset.c:85: Undocumented modification of s1 possible from call to
                erc_iterStart (through alias s2): erc_iterStart(s2)
empset.c:85: Undocumented modification of s2 possible from call to
                erc_iterStart: erc_iterStart(s2)
empset.c: (in function empset_union)
empset.c:108: Undocumented modification of s2 possible from call to
                 erc_iterStart (through alias s1): erc_iterStart(s1)
empset.c:108: Undocumented modification of s1 possible from call to
                 erc_iterStart: erc_iterStart(s1)
empset.c: (in function empset_subset)
empset.c:139: Undocumented modification of s1 possible from call to
                 erc_iterStart: erc_iterStart(s1)
empset.c:135: Variable e declared but not used
ereftab.c: (in function ereftab_lookup)
ereftab.c:34: Undocumented modification of t possible from call to
                 erc_iterStart: erc_iterStart(t)
erc.c: (in function erc_sprint)
erc.c:141: Function malloc expects arg 1 to be size_t gets int:
              erc_size(c) * (employeePrintSize + 1) + 1
erc.c:151: Undocumented modification of c possible from call to erc_iterStart:
              erc_iterStart(c)
dbase.c: (in function query)
dbase.c:210: Variable er declared but not used
dbase.c:211: Variable e declared but not used
drive.c: (in function main)
drive.c:47: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:63: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:81: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:118: Buffer overflow possible with sprintf.  Recommend using snprintf
                instead: sprintf
drive.c:123: Return value (type db_status) ignored: hire(e)

Finished checking --- 19 code warnings, as expected

employee.h:2: Name EMPLOYEE_H is reserved for future library extensions. Macros
    beginning with E and a digit or uppercase letter may be added to <errno.h>.
    (ISO99:7.26.3)
eref.h:2: Name EREF_H is reserved for future library extensions. Macros
    beginning with E and a digit or uppercase letter may be added to <errno.h>.
    (ISO99:7.26.3)
empset.h:2: Name EMPSET_H is reserved for future library extensions. Macros
    beginning with E and a digit or uppercase letter may be added to <errno.h>.
    (ISO99:7.26.3)
erc.h:2: Name ERC_H is reserved for future library extensions. Macros beginning
    with E and a digit or uppercase letter may be added to <errno.h>.
    (ISO99:7.26.3)
ereftab.h:4: Name EREFTAB_H is reserved for future library extensions. Macros
    beginning with E and a digit or uppercase letter may be added to <errno.h>.
    (ISO99:7.26.3)
bool.h:20: Modifies list for bool_initMod uses global internal state, not
              included in globals list.
   bool.h:20: Declaration of bool_initMod
employee.h:12: Declaration parameter has name: p_e
employee.c:5: Definition parameter name e does not match name of corresponding
                 parameter in declaration: p_e
   employee.h:12: Previous declaration of p_e
employee.c: (in function employee_setName)
employee.c:12: Undefined storage e->name corresponds to storage listed in sets
                  clause
   This sub-reference is undefined: *(e->name)
employee.c:12: Body of if statement is not a block: return FALSE
employee.c:15: Parameter 1 (e->name) to function strcpy is declared unique but
                  may be aliased externally by parameter 2 (na)
employee.c: (in function employee_equal)
employee.c:25: Function strncmp expects arg 3 to be size_t gets int:
                  maxEmployeeName
employee.c: (in function employee_sprint)
employee.c:30: Read-only string literal storage used as initial value for
                  unqualified storage: gender[0] = "male"
employee.c:30: Read-only string literal storage used as initial value for
                  unqualified storage: gender[1] = "female"
employee.c:30: Read-only string literal storage used as initial value for
                  unqualified storage: gender[2] = "?"
employee.c:31: Read-only string literal storage used as initial value for
                  unqualified storage: jobs[0] = "manager"
employee.c:31: Read-only string literal storage used as initial value for
                  unqualified storage: jobs[1] = "non-manager"
employee.c:31: Read-only string literal storage used as initial value for
                  unqualified storage: jobs[2] = "?"
employee.c:33: Buffer overflow possible with sprintf.  Recommend using snprintf
                  instead: sprintf
employee.c:34: Array fetch using non-integer, gender: gender[e.gen]
employee.c:34: Array fetch using non-integer, job: jobs[e.j]
employee.h: (in macro employee_initMod)
employee.h:15: Called procedure bool_initMod may access internal state, but
                  globals list does not include globals internalState
employee.h:15: Undocumented modification of internal state possible from call
                  to bool_initMod: bool_initMod()
eref.h:9: Constant exported, but not specified: used
eref.h:9: Constant exported, but not specified: avail
eref.h:9: Type exported, but not specified: eref_status
eref.h:14: Type exported, but not specified: eref_ERP
eref.h:17: Variable exported, but not specified: eref_Pool
eref.c: (in function eref_alloc)
eref.c:12: Undocumented use of global eref_Pool
eref.c:12: Undocumented use of global eref_Pool
eref.c:12: Body of for statement is empty
eref.c:12: Undocumented use of global eref_Pool (in post loop test)
eref.c:16: Undocumented use of global eref_Pool
eref.c:18: Undocumented use of global eref_Pool
eref.c:19: Undocumented use of global eref_Pool
eref.c:20: Undocumented use of global eref_Pool
eref.c:20: Parameter to sizeof is type employee: sizeof(employee)
eref.c:19: Undocumented modification of *(eref_Pool.conts) possible from call
    to realloc: realloc(eref_Pool.conts, 2 * eref_Pool.size * sizeof(employee))
eref.c:18: Undocumented modification of eref_Pool.conts:
    eref_Pool.conts = (employee *)realloc(eref_Pool.conts, 2 * eref_Pool.size *
    sizeof(employee))
eref.c:22: Undocumented use of global eref_Pool
eref.c:25: Argument to exit has implementation defined behavior: 1
eref.c:28: Undocumented use of global eref_Pool
eref.c:29: Undocumented use of global eref_Pool
eref.c:30: Undocumented use of global eref_Pool
eref.c:30: Parameter to sizeof is type eref_status: sizeof(eref_status)
eref.c:29: Undocumented modification of *(eref_Pool.status) possible from call
    to realloc: realloc(eref_Pool.status, 2 * eref_Pool.size *
    sizeof(eref_status))
eref.c:28: Undocumented modification of eref_Pool.status:
    eref_Pool.status = (eref_status *)realloc(eref_Pool.status, 2 *
    eref_Pool.size * sizeof(eref_status))
eref.c:32: Undocumented use of global eref_Pool
eref.c:35: Argument to exit has implementation defined behavior: 1
eref.c:38: Undocumented use of global eref_Pool
eref.c:38: Undocumented use of global eref_Pool
eref.c:38: Undocumented modification of eref_Pool.size:
              eref_Pool.size = 2 * eref_Pool.size
eref.c:40: Undocumented use of global eref_Pool
eref.c:41: Undocumented use of global eref_Pool
eref.c:41: Undocumented modification of eref_Pool.status[]:
              eref_Pool.status[i] = avail
eref.c:41: Body of for statement is not a block: eref_Pool.status[i] = avail;
eref.c:41: Undocumented use of global eref_Pool (in post loop test)
eref.c:44: Undocumented use of global eref_Pool
eref.c:44: Undocumented modification of eref_Pool.status[]:
              eref_Pool.status[res] = used
eref.c: (in function eref_initMod)
eref.c:53: Undocumented use of file static needsInit
eref.c:58: Undocumented use of file static needsInit
eref.c:58: Undocumented modification of needsInit: needsInit = FALSE
eref.c:60: Statement has no effect: employee_initMod()
eref.c:62: Undocumented use of global eref_Pool
eref.c:62: Parameter to sizeof is type employee: sizeof(employee)
eref.c:62: Undocumented modification of eref_Pool.conts:
              eref_Pool.conts = (employee *)malloc(size * sizeof(employee))
eref.c:62: Implicitly only storage eref_Pool.conts (type employee *) not
    released before assignment: eref_Pool.conts = (employee *)malloc(size *
    sizeof(employee))
eref.c:64: Undocumented use of global eref_Pool
eref.c:67: Argument to exit has implementation defined behavior: 1
eref.c:70: Undocumented use of global eref_Pool
eref.c:70: Parameter to sizeof is type eref_status: sizeof(eref_status)
eref.c:70: Undocumented modification of eref_Pool.status:
    eref_Pool.status = (eref_status *)malloc(size * sizeof(eref_status))
eref.c:70: Implicitly only storage eref_Pool.status (type eref_status *) not
    released before assignment: eref_Pool.status = (eref_status *)malloc(size *
    sizeof(eref_status))
eref.c:72: Undocumented use of global eref_Pool
eref.c:75: Argument to exit has implementation defined behavior: 1
eref.c:78: Undocumented use of global eref_Pool
eref.c:78: Undocumented modification of eref_Pool.size: eref_Pool.size = size
eref.c:82: Undocumented use of global eref_Pool
eref.c:82: Undocumented modification of eref_Pool.status[]:
              eref_Pool.status[i] = avail
eref.c:84: Global storage *(eref_Pool.conts) contains 5 undefined fields when
              call returns: ssNum, name, salary, gen, j
eref.c:84: Global storage eref_Pool contains 1 undefined field when call
              returns: status
eref.h: (in macro eref_free)
eref.h:23: Undocumented use of global eref_Pool
eref.h:23: Undocumented modification of eref_Pool.status[]:
              eref_Pool.status[er] = avail
eref.h: (in macro eref_assign)
eref.h:24: Undocumented use of global eref_Pool
eref.h:24: Macro parameter used without parentheses: e
eref.h:24: Undocumented modification of eref_Pool.conts[]:
              eref_Pool.conts[er] = e
eref.h: (in macro eref_get)
eref.h:25: Undocumented use of global eref_Pool
eref.h: (in macro eref_equal)
eref.h:26: Macro parameter used without parentheses: er1
eref.h:26: Macro parameter used without parentheses: er2
erc.h:6: Name _elem is in the implementation name space (any identifier
            beginning with underscore)
erc.h:6: Type exported, but not specified: ercElem
erc.h:7: Type exported, but not specified: ercList
erc.h:8: Type exported, but not specified: ercInfo
empset.h:10: Variable exported, but not specified: known
empset.c:5: Name _empset_get is in the implementation name space (any
               identifier beginning with underscore)
empset.c: (in function _empset_get)
empset.c:11: Undocumented modification of s possible from call to
                erc_iterStart: erc_iterStart(s)
empset.c:15: Body of if statement is not a block: do { { erc_iterFinal(it);
                return er } } while (FALSE);
empset.c: (in function empset_insert)
empset.c:30: Undetected modification possible from call to unconstrained
                function _empset_get: _empset_get
empset.c:28: Variable er declared but not used
empset.c: (in function empset_insertUnique)
empset.c:43: Undocumented use of global known
empset.c:49: Undocumented use of global known
empset.c:49: Undocumented modification of known possible from call to
                ereftab_insert: ereftab_insert(known, e, er)
empset.c: (in function empset_delete)
empset.c:59: Undetected modification possible from call to unconstrained
                function _empset_get: _empset_get
empset.c: (in function empset_disjointUnion)
empset.c:85: Undocumented modification of s1 possible from call to
                erc_iterStart (through alias s2): erc_iterStart(s2)
empset.c:85: Undocumented modification of s2 possible from call to
                erc_iterStart: erc_iterStart(s2)
empset.c:86: Body of for statement is not a block:
                empset_insertUnique(result, eref_get(er));
empset.c: (in function empset_union)
empset.c:108: Undocumented modification of s2 possible from call to
                 erc_iterStart (through alias s1): erc_iterStart(s1)
empset.c:108: Undocumented modification of s1 possible from call to
                 erc_iterStart: erc_iterStart(s1)
empset.c:110: Body of if statement is not a block: erc_insert(result, er);
empset.c:109: Body of for statement is not a block:
                 if (!empset_member(eref_get(er), s2)) erc_insert(result, er);
empset.c: (in function empset_intersect)
empset.c:125: Body of if statement is not a block: erc_insert(toDelete, er);
empset.c:124: Body of for statement is not a block:
    if (!empset_member(eref_get(er), s2)) erc_insert(toDelete, er);
empset.c:128: Return value (type bool) ignored: erc_delete(s1, er)
empset.c:128: Body of for statement is not a block: erc_delete(s1, er);
empset.c: (in function empset_subset)
empset.c:139: Undocumented modification of s1 possible from call to
                 erc_iterStart: erc_iterStart(s1)
empset.c:141: Body of if statement is not a block: do { { erc_iterFinal(it);
                 return FALSE } } while (FALSE);
empset.c:140: Body of for statement is not a block:
    if (!empset_member(eref_get(er), s2)) do { { erc_iterFinal(it);
    return FALSE } } while (FALSE);
empset.c:135: Variable e declared but not used
empset.c: (in function empset_initMod)
empset.c:148: Undocumented use of file static initDone
empset.c:148: Body of if statement is not a block: return
empset.c:151: Statement has no effect: employee_initMod()
empset.c:153: Statement has no effect: erc_initMod()
empset.c:154: Statement has no effect: ereftab_initMod()
empset.c:155: Undocumented use of global known
empset.c:155: Undocumented modification of known: known = ereftab_create()
empset.c:156: Undocumented use of file static initDone
empset.c:156: Undocumented modification of initDone: initDone = TRUE
empset.h: (in macro empset_member)
empset.h:30: Undetected modification possible from call to unconstrained
                function _empset_get: _empset_get
ereftab.c: (in function ereftab_delete)
ereftab.c:24: Return value (type bool) ignored: erc_delete(t, er)
ereftab.c: (in function ereftab_lookup)
ereftab.c:34: Undocumented modification of t possible from call to
                 erc_iterStart: erc_iterStart(t)
ereftab.c:37: Body of if statement is not a block: return er
ereftab.c: (in function ereftab_initMod)
ereftab.c:47: Statement has no effect: erc_initMod()
erc.c: (in function erc_create)
erc.c:8: Parameter to sizeof is type ercInfo: sizeof(ercInfo)
erc.c:13: Argument to exit has implementation defined behavior: 1
erc.c:18: Null storage c->vals derivable from return value: c
   erc.c:16: Storage c->vals becomes null
erc.c:18: Fresh storage returned as unqualified (should be only): c
   erc.c:8: Fresh storage c created
erc.c: (in function erc_clear)
erc.c:34: Function returns with null storage derivable from parameter c->vals
   erc.c:32: Storage c->vals becomes null
erc.c: (in function erc_final)
erc.c:39: Implicitly temp storage c passed as only param: free (c)
erc.c: (in function erc_member)
erc.c:47: Object equality comparison (==) on objects of abstract type (eref):
             tmpc->val == er
erc.c:47: Body of if statement is not a block: return TRUE
erc.c:47: Body of for statement is not a block:
             if (tmpc->val == er) return TRUE
erc.c: (in function erc_insert)
erc.c:55: Parameter to sizeof is type ercElem: sizeof(ercElem)
erc.c:60: Argument to exit has implementation defined behavior: 1
erc.c: (in function erc_delete)
erc.c:78: Object equality comparison (==) on objects of abstract type (eref):
             elem->val == er
erc.c:83: Implicitly only storage prev->next (type struct _elem *) not released
             before assignment: prev->next = elem->next
erc.c:84: Clauses exit with elem referencing implicitly only storage in true
             branch, local storage in false branch
   erc.c:81: Storage elem becomes implicitly only (through alias c->vals)
erc.c:87: Released storage c->vals reachable from parameter at return point
   erc.c:85: Storage c->vals released
erc.c: (in function erc_iterStart)
erc.c:98: Parameter to sizeof is type ercList: sizeof(ercList)
erc.c:103: Argument to exit has implementation defined behavior: 1
erc.c:107: Fresh storage returned as unqualified (should be only): result
   erc.c:98: Fresh storage result created
erc.c:108: Suspect object listed in modifies of erc_iterStart not modified: c
   erc.lcl:49: Specification of erc_iterStart
erc.c: (in function erc_yield)
erc.c:117: Implicitly temp storage it passed as only param: free (it)
erc.c:117: Unreachable code: free(it)
erc.c:118: Variable it is released in true branch, but live in continuation.
   erc.c:118: in true branch:
   erc.c:117: Storage it released
erc.c:121: Only storage *it->next assigned to unqualified: *(it) = (*it)->next
erc.c: (in function erc_join)
erc.c:130: Body of for statement is not a block: erc_insert(c1, tmpc->val);
erc.c: (in function erc_sprint)
erc.c:141: Function malloc expects arg 1 to be size_t gets int:
              erc_size(c) * (employeePrintSize + 1) + 1
erc.c:146: Argument to exit has implementation defined behavior: 1
erc.c:151: Undocumented modification of c possible from call to erc_iterStart:
              erc_iterStart(c)
erc.c:159: Fresh storage returned as unqualified (should be only): result
   erc.c:140: Fresh storage result created
erc.h: (in macro erc_choose)
erc.h:15: Macro parameter used without parentheses: c
erc.h: (in macro erc_initMod)
erc.h:16: Called procedure bool_initMod may access internal state, but globals
             list does not include globals internalState
erc.h:16: Undocumented modification of internal state possible from call to
             bool_initMod: bool_initMod()
erc.h:16: Statement has no effect: employee_initMod()
erc.h: (in macro erc_iterFinal)
erc.h:20: Only storage *it->next (type struct _elem *) derived from released
             storage is not released (memory leak): it
erc.h:20: Implicitly temp storage it passed as only param: free (it)
dbase.c: (in function db_initMod)
dbase.c:21: Undocumented use of global initDone
dbase.c:27: Statement has no effect: employee_initMod()
dbase.c:29: Statement has no effect: erc_initMod()
dbase.c:30: Statement has no effect: empset_initMod()
dbase.c:32: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS
dbase.c:32: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS,
               mNON, fNON }): i <= fNON
dbase.c:34: Undocumented use of global db
dbase.c:34: Undocumented modification of db[]: db[i] = erc_create()
dbase.c:32: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
               (in post loop test): i <= fNON
dbase.c:37: Undocumented use of global initDone
dbase.c:37: Undocumented modification of initDone: initDone = TRUE
dbase.c:40: Name _db_ercKeyGet is in the implementation name space (any
               identifier beginning with underscore)
dbase.c: (in function _db_ercKeyGet)
dbase.c:45: Undocumented modification of c possible from call to erc_iterStart:
               erc_iterStart(c)
dbase.c:56: Name _db_keyGet is in the implementation name space (any identifier
               beginning with underscore)
dbase.c: (in function _db_keyGet)
dbase.c:61: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS
dbase.c:61: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS,
               mNON, fNON }): i <= fNON
dbase.c:63: Undocumented use of global db
dbase.c:63: Undetected modification possible from call to unconstrained
               function _db_ercKeyGet: _db_ercKeyGet
dbase.c:61: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
               (in post loop test): i <= fNON
dbase.c:73: Name _db_addEmpls is in the implementation name space (any
               identifier beginning with underscore)
dbase.c: (in function _db_addEmpls)
dbase.c:81: Undocumented modification of c possible from call to erc_iterStart:
               erc_iterStart(c)
dbase.c:86: Undocumented modification of s possible from call to empset_insert:
               empset_insert(s, e)
dbase.c:86: Return value (type bool) ignored: empset_insert(s, e)
dbase.c: (in function hire)
dbase.c:97: Body of if statement is not a block: return genderERR
dbase.c:100: Body of if statement is not a block: return jobERR
dbase.c:103: Body of if statement is not a block: return salERR
dbase.c:105: Undetected modification possible from call to unconstrained
                function _db_keyGet: _db_keyGet
dbase.c:106: Body of if statement is not a block: return duplERR
dbase.c: (in function uncheckedHire)
dbase.c:121: Undocumented use of global db
dbase.c:121: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mMGRS]
dbase.c:121: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[mMGRS], er)
dbase.c:123: Undocumented use of global db
dbase.c:123: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:123: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[mNON], er)
dbase.c:121: Body of if clause of if statement is not a block:
                erc_insert(db[mMGRS], er);
dbase.c:123: Body of else clause of if statement is not a block:
                erc_insert(db[mNON], er);
dbase.c:126: Undocumented use of global db
dbase.c:126: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fMGRS]
dbase.c:126: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[fMGRS], er)
dbase.c:128: Undocumented use of global db
dbase.c:128: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:128: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[fNON], er)
dbase.c:126: Body of if clause of if statement is not a block:
                erc_insert(db[fMGRS], er);
dbase.c:128: Body of else clause of if statement is not a block:
                erc_insert(db[fNON], er);
dbase.c:123: Body of if clause of if statement is not a block:
    if (e.j == MGR) erc_insert(db[mMGRS], er); else erc_insert(db[mNON], er);
dbase.c: (in function fire)
dbase.c:137: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS
dbase.c:137: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS,
                mNON, fNON }): i <= fNON
dbase.c:138: Undocumented use of global db
dbase.c:138: Undocumented modification of db[] possible from call to
                erc_iterStart: erc_iterStart(db[i])
dbase.c:142: Undocumented use of global db
dbase.c:142: Undocumented modification of db[] possible from call to
                erc_delete: erc_delete(db[i], er)
dbase.c:142: Return value (type bool) ignored: erc_delete(db[i]...
dbase.c:139: Body of for statement is not a block:
                if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it);
                erc_delete(db[i], er);; return TRUE }
dbase.c:139: Body of for statement is not a block:
    for (er = erc_yield(it = erc_iterStart(db[i])); !eref_equal(er, erefNIL);
    er = erc_yield(it)) if (eref_get(er).ssNum == ssNum) { erc_iterFinal(it);
    erc_delete(db[i], er);; return TRUE }
dbase.c:137: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
                (in post loop test): i <= fNON
dbase.c: (in function promote)
dbase.c:156: Undocumented use of global db
dbase.c:156: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:156: Undetected modification possible from call to unconstrained
                function _db_ercKeyGet: _db_ercKeyGet
dbase.c:160: Undocumented use of global db
dbase.c:160: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:160: Undetected modification possible from call to unconstrained
                function _db_ercKeyGet: _db_ercKeyGet
dbase.c:162: Body of if statement is not a block: return FALSE
dbase.c:172: Undocumented use of global db
dbase.c:172: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:172: Undocumented modification of db[] possible from call to
                erc_delete: erc_delete(db[mNON], er)
dbase.c:172: Return value (type bool) ignored: erc_delete(db[mN...
dbase.c:173: Undocumented use of global db
dbase.c:173: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mMGRS]
dbase.c:173: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[mMGRS], er)
dbase.c:177: Undocumented use of global db
dbase.c:177: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:177: Undocumented modification of db[] possible from call to
                erc_delete: erc_delete(db[fNON], er)
dbase.c:177: Return value (type bool) ignored: erc_delete(db[fN...
dbase.c:178: Undocumented use of global db
dbase.c:178: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fMGRS]
dbase.c:178: Undocumented modification of db[] possible from call to
                erc_insert: erc_insert(db[fMGRS], er)
dbase.c: (in function setSalary)
dbase.c:194: Undetected modification possible from call to unconstrained
                function _db_keyGet: _db_keyGet
dbase.c: (in function query)
dbase.c:226: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS
dbase.c:226: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS,
                mNON, fNON }): i <= fNON
dbase.c:227: Undocumented use of global db
dbase.c:227: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:227: Body of for statement is not a block:
                numAdded += _db_addEmpls(db[i], l, h, s);
dbase.c:226: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
                (in post loop test): i <= fNON
dbase.c:230: Undocumented use of global db
dbase.c:230: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mMGRS]
dbase.c:230: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:231: Undocumented use of global db
dbase.c:231: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fMGRS]
dbase.c:231: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:234: Undocumented use of global db
dbase.c:234: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:234: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:235: Undocumented use of global db
dbase.c:235: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:235: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:242: Undocumented use of global db
dbase.c:242: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mMGRS]
dbase.c:242: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:243: Undocumented use of global db
dbase.c:243: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:243: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:246: Undocumented use of global db
dbase.c:246: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mMGRS]
dbase.c:246: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:248: Undocumented use of global db
dbase.c:248: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[mNON]
dbase.c:248: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:254: Undocumented use of global db
dbase.c:254: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fMGRS]
dbase.c:254: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:255: Undocumented use of global db
dbase.c:255: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:255: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:258: Undocumented use of global db
dbase.c:258: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fMGRS]
dbase.c:258: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:260: Undocumented use of global db
dbase.c:260: Array fetch using non-integer, enum { mMGRS, fMGRS, mNON, fNON }:
                db[fNON]
dbase.c:260: Undetected modification possible from call to unconstrained
                function _db_addEmpls: _db_addEmpls
dbase.c:210: Variable er declared but not used
dbase.c:211: Variable e declared but not used
dbase.c:263: Suspect object listed in modifies of query not modified: s
   dbase.lcl:49: Specification of query
dbase.c: (in function db_print)
dbase.c:272: Assignment of enum { mMGRS, fMGRS, mNON, fNON } to int: i = mMGRS
dbase.c:272: Operands of <= have incompatible types (int, enum { mMGRS, fMGRS,
                mNON, fNON }): i <= fNON
dbase.c:274: Undocumented use of global db
dbase.c:272: Incompatible types for <= (int, enum { mMGRS, fMGRS, mNON, fNON })
                (in post loop test): i <= fNON
drive.c: (in function main)
drive.c:22: Statement has no effect: employee_initMod()
drive.c:23: Statement has no effect: empset_initMod()
drive.c:47: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:48: Return value (type bool) ignored: employee_setName...
drive.c:49: Return value (type bool) ignored: empset_insert(em...
drive.c:63: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:64: Return value (type bool) ignored: employee_setName...
drive.c:65: Return value (type bool) ignored: empset_delete(em...
drive.c:81: Buffer overflow possible with sprintf.  Recommend using snprintf
               instead: sprintf
drive.c:82: Return value (type bool) ignored: employee_setName...
drive.c:83: Return value (type bool) ignored: empset_insert(em...
drive.c:107: Return value (type bool) ignored: empset_delete(em...
drive.c:116: Body of if clause of if statement is not a block: e.gen = MALE;
drive.c:116: Body of else clause of if statement is not a block:
                e.gen = FEMALE;
drive.c:117: Body of if clause of if statement is not a block: e.j = NONMGR;
drive.c:117: Body of else clause of if statement is not a block: e.j = MGR;
drive.c:118: Buffer overflow possible with sprintf.  Recommend using snprintf
                instead: sprintf
drive.c:119: Return value (type bool) ignored: employee_setName...
drive.c:123: Return value (type db_status) ignored: hire(e)
drive.c:127: Assignment of db_status to int: j = hire(e)
drive.c:131: Variable j used before definition
drive.c:134: Return value (type bool) ignored: fire(17)
drive.c:158: Return value (type bool) ignored: fire(empset_choo...
drive.c:11: Parameter argv not used
dbase.c:11: Type employeeKinds declared but not used
eref.lh:7: Function exported but not used outside eref: eref_free
   eref.h:23: Definition of eref_free
empset.lh:7: Function exported but not used outside empset: empset_final
   empset.h:29: Definition of empset_final
empset.lh:8: Function exported but not used outside empset: empset_clear
   empset.c:24: Definition of empset_clear
empset.lh:10: Function exported but not used outside empset:
                 empset_insertUnique
   empset.c:53: Definition of empset_insertUnique
empset.lh:16: Function exported but not used outside empset: empset_member
   empset.h:30: Definition of empset_member
empset.lh:17: Function exported but not used outside empset: empset_subset
   empset.c:144: Definition of empset_subset
ereftab.lh:9: Function exported but not used outside ereftab: ereftab_delete
   ereftab.c:26: Definition of ereftab_delete
dbase.c:13: Variable exported but not used outside dbase: db
dbase.lh:26: Function exported but not used outside dbase: promote
   dbase.c:182: Definition of promote
dbase.lh:27: Function exported but not used outside dbase: setSalary
   dbase.c:206: Definition of setSalary
empset.h:10: Variable exported but not used outside empset: known
dbase.c:15: Variable exported but not used outside dbase: initDone
dbase.c:40: Function exported but not used outside dbase: _db_ercKeyGet
   dbase.c:54: Definition of _db_ercKeyGet
dbase.c:56: Function exported but not used outside dbase: _db_keyGet
   dbase.c:71: Definition of _db_keyGet
dbase.c:73: Function exported but not used outside dbase: _db_addEmpls
   dbase.c:92: Definition of _db_addEmpls
dbase.c:13: Variable db exported but not declared in header file
empset.c:5: Function _empset_get exported but not declared in header file
   empset.c:19: Definition of _empset_get
dbase.c:15: Variable initDone exported but not declared in header file
dbase.c:40: Function _db_ercKeyGet exported but not declared in header file
   dbase.c:54: Definition of _db_ercKeyGet
dbase.c:56: Function _db_keyGet exported but not declared in header file
   dbase.c:71: Definition of _db_keyGet
dbase.c:73: Function _db_addEmpls exported but not declared in header file
   dbase.c:92: Definition of _db_addEmpls

Error Type                Reported  Suppressed
===================       ========  =========
nullret                      1           0
nullstate                    1           0
usedef                       1           0
compdef                      3           0
incondefs                    0           1
sizeoftype                   7           0
formalarray                  0          24
abstractcompare              2           0
mustfreeonly                 3           0
usereleased                  1           0
compdestroy                  1           0
branchstate                  2           1
onlytrans                    1           0
freshtrans                   3           0
temptrans                    3           2
readonlytrans                6           0
mayaliasunique               1           0
mods                        38           0
mustmod                      2           0
modfilesys                   0          25
modnomods                    4           0
moduncon                    20           0
modunconnomods               1           0
globs                       64           1
internalglobs                2           0
warnmissingglobs             1           6
forempty                     1           0
forblock                    11           0
ifblock                     22           0
unreachable                  1           0
noeffect                    11           0
retvalother                  1           0
retvalbool                  16           0
macroparens                  4           0
namechecks                  11           6
protoparammatch              1           0
exportlocal                 15           0
exportheader                 4           0
exportheadervar              2           0
paramuse                     1           0
typeuse                      1           0
varuse                       4           0
exitarg                      8           0
redecl                       0           7
exporttype                   5           0
exportvar                    2           0
exportconst                  2           0
type                         1           0
enumindex                   24           0
enumint                     15           0
matchanyintegral             2           0
bufferoverflowhigh           5           0
                          ========  =========
Total                      338          73

Finished checking --- 338 code warnings, as expected