source: vis_dev/glu-2.3/src/util/strsav.c

Last change on this file was 13, checked in by cecile, 13 years ago

library glu 2.3

File size: 2.7 KB
Line 
1/*
2 * Revision Control Information
3 *
4 * $Id: strsav.c,v 1.7 2009/01/05 21:04:04 fabio Exp $
5 *
6 */
7/* LINTLIBRARY */
8
9#include <stdio.h>
10#include "util.h"
11
12
13/*
14 *  util_strsav -- save a copy of a string
15 */
16char *
17util_strsav(char const *s)
18{
19    if(s == NIL(char)) {  /* added 7/95, for robustness */
20       return NIL(char);
21    }
22    else {
23       return strcpy(ALLOC(char, strlen(s)+1), s);
24    }
25}
26
27/*
28 * util_inttostr -- converts an integer into a string
29 */
30char *
31util_inttostr(int i)
32{
33  unsigned int mod, len;
34  char *s;
35 
36  if (i == 0)
37    len = 1;
38  else {
39    if (i < 0) {
40      len = 1;
41      mod = -i;
42    }
43    else {
44      len = 0;
45      mod = i;
46    }
47    len += (unsigned) floor(log10(mod)) + 1;
48  }
49
50  s = ALLOC(char, len + 1);
51  sprintf(s, "%d", i);
52 
53  return s;
54}
55
56/*
57 * util_strcat3 -- Creates a new string which is the concatenation of 3
58 *    strings. It is the responsibility of the caller to free this string
59 *    using FREE.
60 */
61char *
62util_strcat3(
63  char const * str1,
64  char const * str2,
65  char const * str3)
66{
67  char *str = ALLOC(char, strlen(str1) + strlen(str2) + strlen(str3) + 1);
68 
69  (void) strcpy(str, str1);
70  (void) strcat(str, str2);
71  (void) strcat(str, str3);
72
73  return (str);
74}
75
76/*
77 * util_strcat4 -- Creates a new string which is the concatenation of 4
78 *    strings. It is the responsibility of the caller to free this string
79 *    using FREE.
80 */
81char *
82util_strcat4(
83  char const * str1,
84  char const * str2,
85  char const * str3,
86  char const * str4)
87{
88  char *str = ALLOC(char, strlen(str1) + strlen(str2) + strlen(str3) +
89                    strlen(str4) + 1);
90 
91  (void) strcpy(str, str1);
92  (void) strcat(str, str2);
93  (void) strcat(str, str3);
94  (void) strcat(str, str4);
95
96  return (str);
97}
98
99
100#if !HAVE_STRSTR
101/**Function********************************************************************
102
103  Synopsis    [required]
104
105  Description [optional]
106
107  SideEffects [required]
108
109  SeeAlso     [optional]
110
111******************************************************************************/
112char *
113strstr(
114  char const * s,
115  char const * pat)
116{
117  int len;
118
119  len = strlen(pat);
120  for (; *s != '\0'; ++s)
121    if (*s == *pat && memcmp(s, pat, len) ==  0) {
122      return (char *)s; /* UGH */
123    }
124  return NULL;
125}
126#endif /* !HAVE_STRSTR */
127
128#if !HAVE_STRCHR
129/**Function********************************************************************
130
131  Synopsis    [required]
132
133  Description [optional]
134
135  SideEffects [required]
136
137  SeeAlso     [optional]
138
139******************************************************************************/
140char *
141strchr(char const * s, int c)
142{
143   for (; *s != '\0'; s++) {
144     if (*s == c) {
145       return (char *)s;
146     }
147   }
148   return NULL;
149   
150}
151#endif /* !HAVE_STRCHR */
Note: See TracBrowser for help on using the repository browser.