/simpletypesystem/trunk

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/simpletypesystem/trunk

« back to all changes in this revision

Viewing changes to libssts/utils.c

  • Committer: Gustav Hartvigsson
  • Date: 2016-02-01 14:11:35 UTC
  • mto: This revision was merged to the branch mainline in revision 122.
  • Revision ID: gustav.hartvigsson@gmail.com-20160201141135-pcl4m4gcf8r7t11e
* Made the GC switchable at rutime (once) when compiled with S_USE_GC set.
* replaced:
  * malloc ->   s_malloc
  * free ->     s_free
  * realloc ->  s_realloc
  * calloc ->   s_calloc

* Made s_[malloc, calloc, free, realloc] functions and moved them to their own file.
  This can be used os basis for other memory stuffs in the future, if we want to use
  a Slab allocator or something else.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
*/
22
22
 
23
23
#include "utils.h"
 
24
 
24
25
#include <string.h>
25
26
#include <stdlib.h>
26
27
#include <stdio.h>
36
37
  }
37
38
  size_t s_len = strlen (s);
38
39
  assert (s_len > 0);
39
 
  schar * ret_val = malloc (s_len + 1);
 
40
  schar * ret_val = s_malloc (s_len + 1);
40
41
  strcpy (ret_val, s);
41
42
  ret_val[s_len] = '\0';
42
43
  return ret_val;
44
45
 
45
46
schar *
46
47
s_string_new_fmt (const schar * format, ...) {
47
 
  schar * buffer = malloc (strlen (format) + 512);
 
48
  schar * buffer = s_malloc (strlen (format) + 512);
48
49
  schar * ret_val = NULL;
49
50
  va_list args;
50
51
  va_start(args, format);
51
52
  vsprintf (buffer, format, args);
52
53
  ret_val = s_string_new (buffer);
53
54
  va_end(args);
54
 
  free (buffer);
 
55
  s_free (buffer);
55
56
  return ret_val;
56
57
}
57
58
 
58
59
schar *
59
60
s_string_new_with_len (const schar * s, size_t len) {
60
 
  schar * ret_val = malloc (len + 1);
 
61
  schar * ret_val = s_malloc (len + 1);
61
62
  ret_val[len + 1] = 0x0;
62
63
  strncpy (ret_val, s, len);
63
64
  return ret_val;
65
66
 
66
67
schar *
67
68
s_current_time (void) {
68
 
  schar * ret_val = malloc (21);
 
69
  schar * ret_val = s_malloc (21);
69
70
  time_t t = time (NULL);
70
71
  strftime (ret_val, 21, "%F %T", localtime (&t));
71
72
  return ret_val;
114
115
    size_t old_locale_len;
115
116
    old_locale = setlocale (LC_ALL, NULL);
116
117
    old_locale_len = strlen (old_locale) + 1;
117
 
    saved_locale = malloc (sizeof (char *) * old_locale_len);
 
118
    saved_locale = s_malloc (sizeof (char *) * old_locale_len);
118
119
    memcpy (saved_locale, old_locale, old_locale_len);
119
120
    /* set locale */
120
121
    setlocale (LC_ALL, "C.utf8");
135
136
   */
136
137
  for (buflen = 4, buffer = NULL, bufpos = 0; ws; buflen *= 2) {
137
138
    size_t converted;
138
 
    if(! (resized = realloc (buffer, buflen)))
 
139
    if(! (resized = s_realloc (buffer, buflen)))
139
140
      goto err;
140
141
    buffer = resized;
141
142
    if((converted = wcsrtombs (buffer + bufpos, &ws, buflen - bufpos, &mbstate))
145
146
  }
146
147
 
147
148
  /* shrink buffer to actually required size */
148
 
  if (! (resized = realloc (buffer, bufpos + 1)))
 
149
  if (! (resized = s_realloc (buffer, bufpos + 1)))
149
150
    goto err;
150
151
 
151
152
  /* reset locale */
156
157
  /* reset locale */
157
158
  setlocale (LC_ALL, saved_locale);
158
159
 
159
 
  free(buffer);
 
160
  s_free(buffer);
160
161
  return NULL;
161
162
}
162
163