File: eref.c

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 (85 lines) | stat: -rw-r--r-- 1,675 bytes parent folder | download | duplicates (11)
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
# include <stdio.h>
# include <stdlib.h>
# include "eref.h"

eref_ERP eref_Pool;            /* private */
static bool needsInit = TRUE;  /* private */

eref eref_alloc (void) 
{
  int i, res;
  
  for (i=0; (eref_Pool.status[i] == used) && (i < eref_Pool.size); i++);
  
  res = i;

  if (res == eref_Pool.size) 
    {
      eref_Pool.conts =
	(employee *) realloc (eref_Pool.conts,
			      2 * eref_Pool.size * sizeof (employee));
      
      if (eref_Pool.conts == 0) 
	{
	  printf ("Malloc returned null in eref_alloc\n");
	  exit (EXIT_FAILURE);
	}
      
      eref_Pool.status =
	(eref_status *) realloc (eref_Pool.status,
				 2 * eref_Pool.size * sizeof (eref_status));

      if (eref_Pool.status == 0) 
	{
	  printf ("Malloc returned null in eref_alloc\n");
	  exit (EXIT_FAILURE);
	}
      
      eref_Pool.size = 2*eref_Pool.size;

      for (i = res+1; i < eref_Pool.size; i++)
        eref_Pool.status[i] = avail;
    }
  
  eref_Pool.status[res] = used;
  return (eref) res;
}

void eref_initMod (void) 
{
  int i;
  const int size = 16;
  
  if (!needsInit) 
    {
      return;
    }

  needsInit = FALSE;
  bool_initMod ();
  employee_initMod ();

  eref_Pool.conts = (employee *) malloc (size * sizeof (employee));

  if (eref_Pool.conts == 0) 
    {
      printf ("Malloc returned null in eref_initMod\n");
      exit (EXIT_FAILURE);
    }
  
  eref_Pool.status = (eref_status *) malloc (size * sizeof (eref_status));

  if (eref_Pool.status == 0) 
    {
      printf ("Malloc returned null in eref_initMod\n");
      exit (EXIT_FAILURE);
    }
  
  eref_Pool.size = size;

  for (i = 0; i < size; i++)
    {
      eref_Pool.status[i] = avail;
    }
}