~vcs-imports/samba/main

« back to all changes in this revision

Viewing changes to source/iniparser/src/strlib.c

  • Committer: jerry
  • Date: 2006-07-14 21:48:39 UTC
  • Revision ID: vcs-imports@canonical.com-20060714214839-586d8c489a8fcead
gutting trunk to move to svn:externals

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
 
2
 
/*-------------------------------------------------------------------------*/
3
 
/**
4
 
  @file         strlib.c
5
 
  @author       N. Devillard
6
 
  @date         Jan 2001
7
 
  @version      $Revision: 1.8 $
8
 
  @brief        Various string handling routines to complement the C lib.
9
 
 
10
 
  This modules adds a few complementary string routines usually missing
11
 
  in the standard C library.
12
 
*/
13
 
/*--------------------------------------------------------------------------*/
14
 
 
15
 
/*
16
 
        $Id: strlib.c,v 1.8 2002/12/12 10:29:16 ndevilla Exp $
17
 
        $Author: ndevilla $
18
 
        $Date: 2002/12/12 10:29:16 $
19
 
        $Revision: 1.8 $
20
 
*/
21
 
 
22
 
/*---------------------------------------------------------------------------
23
 
                                                                Includes
24
 
 ---------------------------------------------------------------------------*/
25
 
 
26
 
#include <string.h>
27
 
#include <ctype.h>
28
 
 
29
 
#include "strlib.h"
30
 
 
31
 
/*---------------------------------------------------------------------------
32
 
                                                            Defines     
33
 
 ---------------------------------------------------------------------------*/
34
 
#define ASCIILINESZ     1024
35
 
 
36
 
/*---------------------------------------------------------------------------
37
 
                                                        Function codes
38
 
 ---------------------------------------------------------------------------*/
39
 
 
40
 
 
41
 
/*-------------------------------------------------------------------------*/
42
 
/**
43
 
  @brief        Convert a string to lowercase.
44
 
  @param        s       String to convert.
45
 
  @return       ptr to statically allocated string.
46
 
 
47
 
  This function returns a pointer to a statically allocated string
48
 
  containing a lowercased version of the input string. Do not free
49
 
  or modify the returned string! Since the returned string is statically
50
 
  allocated, it will be modified at each function call (not re-entrant).
51
 
 */
52
 
/*--------------------------------------------------------------------------*/
53
 
 
54
 
char * strlwc(char * s)
55
 
{
56
 
    static char l[ASCIILINESZ+1];
57
 
    int i ;
58
 
 
59
 
    if (s==NULL) return NULL ;
60
 
    memset(l, 0, ASCIILINESZ+1);
61
 
    i=0 ;
62
 
    while (s[i] && i<ASCIILINESZ) {
63
 
        l[i] = (char)tolower((int)s[i]);
64
 
        i++ ;
65
 
    }
66
 
    l[ASCIILINESZ]=(char)0;
67
 
    return l ;
68
 
}
69
 
 
70
 
 
71
 
 
72
 
/*-------------------------------------------------------------------------*/
73
 
/**
74
 
  @brief        Convert a string to uppercase.
75
 
  @param        s       String to convert.
76
 
  @return       ptr to statically allocated string.
77
 
 
78
 
  This function returns a pointer to a statically allocated string
79
 
  containing an uppercased version of the input string. Do not free
80
 
  or modify the returned string! Since the returned string is statically
81
 
  allocated, it will be modified at each function call (not re-entrant).
82
 
 */
83
 
/*--------------------------------------------------------------------------*/
84
 
 
85
 
char * strupc(char * s)
86
 
{
87
 
    static char l[ASCIILINESZ+1];
88
 
    int i ;
89
 
 
90
 
    if (s==NULL) return NULL ;
91
 
    memset(l, 0, ASCIILINESZ+1);
92
 
    i=0 ;
93
 
    while (s[i] && i<ASCIILINESZ) {
94
 
        l[i] = (char)toupper((int)s[i]);
95
 
        i++ ;
96
 
    }
97
 
    l[ASCIILINESZ]=(char)0;
98
 
    return l ;
99
 
}
100
 
 
101
 
 
102
 
 
103
 
/*-------------------------------------------------------------------------*/
104
 
/**
105
 
  @brief        Skip blanks until the first non-blank character.
106
 
  @param        s       String to parse.
107
 
  @return       Pointer to char inside given string.
108
 
 
109
 
  This function returns a pointer to the first non-blank character in the
110
 
  given string.
111
 
 */
112
 
/*--------------------------------------------------------------------------*/
113
 
 
114
 
char * strskp(char * s)
115
 
{
116
 
    char * skip = s;
117
 
        if (s==NULL) return NULL ;
118
 
    while (isspace((int)*skip) && *skip) skip++;
119
 
    return skip ;
120
 
121
 
 
122
 
 
123
 
 
124
 
/*-------------------------------------------------------------------------*/
125
 
/**
126
 
  @brief        Remove blanks at the end of a string.
127
 
  @param        s       String to parse.
128
 
  @return       ptr to statically allocated string.
129
 
 
130
 
  This function returns a pointer to a statically allocated string,
131
 
  which is identical to the input string, except that all blank
132
 
  characters at the end of the string have been removed.
133
 
  Do not free or modify the returned string! Since the returned string
134
 
  is statically allocated, it will be modified at each function call
135
 
  (not re-entrant).
136
 
 */
137
 
/*--------------------------------------------------------------------------*/
138
 
 
139
 
char * strcrop(char * s)
140
 
{
141
 
    static char l[ASCIILINESZ+1];
142
 
        char * last ;
143
 
 
144
 
    if (s==NULL) return NULL ;
145
 
    memset(l, 0, ASCIILINESZ+1);
146
 
        strcpy(l, s);
147
 
        last = l + strlen(l);
148
 
        while (last > l) {
149
 
                if (!isspace((int)*(last-1)))
150
 
                        break ;
151
 
                last -- ;
152
 
        }
153
 
        *last = (char)0;
154
 
    return l ;
155
 
}
156
 
 
157
 
 
158
 
 
159
 
/*-------------------------------------------------------------------------*/
160
 
/**
161
 
  @brief        Remove blanks at the beginning and the end of a string.
162
 
  @param        s       String to parse.
163
 
  @return       ptr to statically allocated string.
164
 
 
165
 
  This function returns a pointer to a statically allocated string,
166
 
  which is identical to the input string, except that all blank
167
 
  characters at the end and the beg. of the string have been removed.
168
 
  Do not free or modify the returned string! Since the returned string
169
 
  is statically allocated, it will be modified at each function call
170
 
  (not re-entrant).
171
 
 */
172
 
/*--------------------------------------------------------------------------*/
173
 
char * strstrip(char * s)
174
 
{
175
 
    static char l[ASCIILINESZ+1];
176
 
        char * last ;
177
 
        
178
 
    if (s==NULL) return NULL ;
179
 
    
180
 
        while (isspace((int)*s) && *s) s++;
181
 
        
182
 
        memset(l, 0, ASCIILINESZ+1);
183
 
        strcpy(l, s);
184
 
        last = l + strlen(l);
185
 
        while (last > l) {
186
 
                if (!isspace((int)*(last-1)))
187
 
                        break ;
188
 
                last -- ;
189
 
        }
190
 
        *last = (char)0;
191
 
 
192
 
        return (char*)l ;
193
 
}
194
 
 
195
 
/* Test code */
196
 
#ifdef TEST
197
 
int main(int argc, char * argv[])
198
 
{
199
 
        char * str ;
200
 
 
201
 
        str = "\t\tI'm a lumberkack and I'm OK      " ;
202
 
        printf("lowercase: [%s]\n", strlwc(str));
203
 
        printf("uppercase: [%s]\n", strupc(str));
204
 
        printf("skipped  : [%s]\n", strskp(str));
205
 
        printf("cropped  : [%s]\n", strcrop(str));
206
 
        printf("stripped : [%s]\n", strstrip(str));
207
 
 
208
 
        return 0 ;
209
 
}
210
 
#endif
211
 
/* vim: set ts=4 et sw=4 tw=75 */