File: string.c

package info (click to toggle)
xfaces 3.3-29
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, buster, sid, stretch
  • size: 948 kB
  • ctags: 1,414
  • sloc: ansic: 7,487; makefile: 948; sh: 5
file content (125 lines) | stat: -rw-r--r-- 2,837 bytes parent folder | download | duplicates (7)
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
/*                             -*- Mode: C++-C -*- 
 * 
 *  
 * 	     Copyright 1994 Christopher B. Liebman
 * 
 *  Permission to use, copy, modify, distribute, and sell this software
 *  and its documentation for any purpose is hereby granted without fee,
 *  provided that the above copyright notice appear in all copies and that
 *  both that copyright notice and this permission notice appear in
 *  supporting documentation, and that the name Christopher B. Liebman not
 *  be used in advertising or publicity pertaining to distribution of this
 *  software without specific, written prior permission.
 * 
 * THIS SOFTWARE IS PROVIDED `AS-IS'.  CHRISTOPHER B. LIEBMAN, DISCLAIMS
 * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT
 * LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
 * PARTICULAR PURPOSE, OR NONINFRINGEMENT.  IN NO EVENT SHALL CHRISTOPHER
 * B. LIEBMAN, BE LIABLE FOR ANY DAMAGES WHATSOEVER, INCLUDING SPECIAL,
 * INCIDENTAL OR CONSEQUENTIAL DAMAGES, INCLUDING LOSS OF USE, DATA, OR
 * PROFITS, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS OF
 * WHETHER IN AN ACTION IN CONTRACT, TORT OR NEGLIGENCE, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 * 
 * 
 * 
 * Author          : Chris Liebman
 * Created On      : Mon Jan 31 22:31:39 1994
 * Last Modified By: Chris Liebman
 * Last Modified On: Mon Jan 31 23:22:48 1994
 * Update Count    : 5
 * Status          : Released
 * 
 * HISTORY
 * 
 * PURPOSE
 * 	Misc string functions.
*/

#ifndef lint
static char *RCSid = "$Id: string.c,v 1.2 1994/02/01 04:25:32 liebman Exp $";
#endif

#include "faces.h"

char**
StringParse(str, delims)
char* str;
char* delims;
{
    char*		name;
    int			count = 0;
    int			array_size = 0;
    char**	array = NULL;
    
    if (str == NULL)
    {
	return NULL;
    }
    
    array_size = 10;
    array = (char**)XtMalloc(array_size * sizeof(char*));
    
    while((name = ParseToken(&str, delims)) != NULL)
    {
	if (count >= array_size)
	{
	    array_size += 10;
	    array = (char**)XtRealloc((char*)array,
				       array_size * sizeof(char*));
	}
	
	array[count++] = name;
    }
    
    array[count] = NULL;
    
    return array;
}

String
SkipChars(str, delim)
String	str;
String	delim;
{
    while((*str != '\0') && (index(delim, *str) != NULL))
    {
	++str;
    }
    
    return(str);
}

String
ParseToken(str, delim)
String	*str;
String	delim;
{
    String	token;
    
    *str = SkipChars(*str, delim);
    
    if (**str == '\0')
    {
	return(NULL);
    }
    
    token = *str;
    
    while(index(delim, **str) == NULL)
    {
	++(*str);
    }
    
    /*
     *   We are now pointing at the first delim, change it to a NULL.
    */
    
    if (**str != '\0')
    {
	**str = '\0';
	++(*str);
    }
    
    return(token);
}