author | X gate hg captive account <xhg@xserver.us.oracle.com> |
Wed, 19 Aug 2015 13:48:41 -0700 | |
changeset 1484 | bc8922b8e1d2 |
parent 943 | 294f64612d23 |
permissions | -rw-r--r-- |
824
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1 |
/* |
943
294f64612d23
6948254 Mass update of X gate sources to Oracle copyright format
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
919
diff
changeset
|
2 |
* Copyright (c) 1993, 1996, Oracle and/or its affiliates. All rights reserved. |
824
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
3 |
* |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
4 |
* Permission is hereby granted, free of charge, to any person obtaining a |
919
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
5 |
* copy of this software and associated documentation files (the "Software"), |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
6 |
* to deal in the Software without restriction, including without limitation |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
7 |
* the rights to use, copy, modify, merge, publish, distribute, sublicense, |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
8 |
* and/or sell copies of the Software, and to permit persons to whom the |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
9 |
* Software is furnished to do so, subject to the following conditions: |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
10 |
* |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
11 |
* The above copyright notice and this permission notice (including the next |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
12 |
* paragraph) shall be included in all copies or substantial portions of the |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
13 |
* Software. |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
14 |
* |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
15 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
16 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
17 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
18 |
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
19 |
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
20 |
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
425233ae7236
6931307 Standardize Sun copyright & license notices in X gate on current format
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
907
diff
changeset
|
21 |
* DEALINGS IN THE SOFTWARE. |
824
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
22 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
23 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
24 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
25 |
#include <stdio.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
26 |
#include <stdlib.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
27 |
#include <sys/types.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
28 |
#include <sys/stat.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
29 |
#include <fcntl.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
30 |
#include <ctype.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
31 |
#include <unistd.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
32 |
#include <string.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
33 |
#include <errno.h> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
34 |
#include "Sunowconfig.h" |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
35 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
36 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
37 |
Implementation Note: This implementation was done with some generality |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
38 |
in mind. If at some point it becomes necessary to add more |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
39 |
elaborate per class or per instance data, this should be |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
40 |
readily accommodated by this implementation. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
41 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
42 |
It is assumed that the configuration database is relatively |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
43 |
small, say, fewer than 1000 entries. There's no hard limit, but |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
44 |
there's no optimization either. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
45 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
46 |
The "package" mechanism is hokey. It was done to |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
47 |
address the concern that nobody wanted package names specified |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
48 |
on a per instance basis, but there needed to be some mechanism |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
49 |
that identified an instance as belonging to a package. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
50 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
51 |
The previous implementation mentioned that it was not |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
52 |
MTsafe or MThot. The same applies to this implementation. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
53 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
54 |
Error handling is very primitive. If a more sophisticated |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
55 |
means of reporting and acting upon error conditions can be |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
56 |
developed..., great. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
57 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
58 |
It would be nice if we could use alloca, but since this |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
59 |
is also an Xsun server library, we can't. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
60 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
61 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
62 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
63 |
OWconfig implementation private data structures... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
64 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
65 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
66 |
struct databaseStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
67 |
int dummy; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
68 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
69 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
70 |
struct classStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
71 |
int dummy; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
72 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
73 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
74 |
struct instanceStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
75 |
char *pkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
76 |
int lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
77 |
struct nodeStruct *nextInstance, *prevInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
78 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
79 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
80 |
struct attrStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
81 |
char *value; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
82 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
83 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
84 |
/* |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
85 |
* A class list is a child of the database. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
86 |
* An instance list is a child of a class. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
87 |
* An attribute list is a child of an instance. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
88 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
89 |
struct nodeStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
90 |
char *name; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
91 |
unsigned int hashValue; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
92 |
struct nodeStruct *next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
93 |
struct nodeStruct *prev; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
94 |
struct nodeStruct *parent; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
95 |
struct nodeStruct *head; /* One end of the child list... */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
96 |
struct nodeStruct *tail; /* The other end... */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
97 |
void (*nodeFree)(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
98 |
union { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
99 |
struct databaseStruct database; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
100 |
struct classStruct class; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
101 |
struct instanceStruct instance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
102 |
struct attrStruct attr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
103 |
} nodeValue; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
104 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
105 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
106 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
107 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
108 |
/* |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
109 |
* Store comments as a singly linked list... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
110 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
111 |
struct commentStruct { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
112 |
char *comment; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
113 |
int lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
114 |
struct commentStruct *next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
115 |
}; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
116 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
117 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
118 |
/*** Max pathname length... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
119 |
#define FNLENGTH 300 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
120 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
121 |
/*** Unit of allocation for input line buffer... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
122 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
123 |
#define LINEALLOCUNIT 128 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
124 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
125 |
/*** Max length of statically allocated strings... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
126 |
#define MAXVALLENGTH 128 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
127 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
128 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
129 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
130 |
Data Declarations... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
131 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
132 |
static struct nodeStruct OWconfigDatabase; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
133 |
static int databaseValid = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
134 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
135 |
static char currentPackage[MAXVALLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
136 |
static char *defaultNewPkgName="RESERVED-unassigned"; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
137 |
static char *defaultOldPkgName="RESERVED-oldstyle"; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
138 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
139 |
/*** If ever there are multiple databases, this could be moved into |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
140 |
a database nodeStruct. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
141 |
***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
142 |
static char *readFile1 = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
143 |
static char *readFile2 = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
144 |
static int OWconfigFlags = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
145 |
static void *(*allocMem)(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
146 |
static void (*freeMem)(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
147 |
static time_t readFile1TimeStamp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
148 |
static time_t readFile2TimeStamp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
149 |
static struct commentStruct *commentList = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
150 |
static struct commentStruct *lastComment = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
151 |
static struct nodeStruct *instanceListHead = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
152 |
static struct nodeStruct *instanceListTail = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
153 |
static int lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
154 |
static int lastLineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
155 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
156 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
157 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
158 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
159 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
160 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
161 |
**************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
162 |
Implementation private functions... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
163 |
**************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
164 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
165 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
166 |
#define FREENODE(np) \ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
167 |
if (np->parent->head == np)\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
168 |
np->parent->head = np->next;\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
169 |
if (np->parent->tail == np)\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
170 |
np->parent->tail = np->prev;\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
171 |
if (np->next)\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
172 |
np->next->prev = np->prev;\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
173 |
if (np->prev)\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
174 |
np->prev->next = np->next;\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
175 |
freeMem(np->name);\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
176 |
freeMem((char *)np); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
177 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
178 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
179 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
180 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
181 |
freeNodeList: The generic node list destructor... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
182 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
183 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
184 |
freeNodeList(struct nodeStruct *np) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
185 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
186 |
struct nodeStruct *next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
187 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
188 |
while (np) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
189 |
if (np->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
190 |
freeNodeList(np->head); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
191 |
next = np->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
192 |
if (np->nodeFree) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
193 |
np->nodeFree(np); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
194 |
np = next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
195 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
196 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
197 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
198 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
199 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
200 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
201 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
202 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
203 |
freeClass: The class node destructor... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
204 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
205 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
206 |
freeClass(struct nodeStruct *cp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
207 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
208 |
if (cp->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
209 |
freeNodeList(cp->head); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
210 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
211 |
FREENODE(cp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
212 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
213 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
214 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
215 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
216 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
217 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
218 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
219 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
220 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
221 |
freeInstance: The instance node destructor... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
222 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
223 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
224 |
freeInstance(struct nodeStruct *ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
225 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
226 |
char *tmp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
227 |
struct nodeStruct *nextInstance, *prevInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
228 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
229 |
if (ip->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
230 |
freeNodeList(ip->head); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
231 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
232 |
tmp = ip->nodeValue.instance.pkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
233 |
if (tmp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
234 |
freeMem(tmp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
235 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
236 |
if (OWconfigFlags & OWFLAG_RETAIN) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
237 |
nextInstance = ip->nodeValue.instance.nextInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
238 |
prevInstance = ip->nodeValue.instance.prevInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
239 |
if (nextInstance) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
240 |
nextInstance->nodeValue.instance.prevInstance = |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
241 |
prevInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
242 |
if (prevInstance) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
243 |
prevInstance->nodeValue.instance.nextInstance = |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
244 |
nextInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
245 |
if (instanceListHead == ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
246 |
instanceListHead = nextInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
247 |
if (instanceListTail == ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
248 |
instanceListTail = prevInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
249 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
250 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
251 |
FREENODE(ip); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
252 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
253 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
254 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
255 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
256 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
257 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
258 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
259 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
260 |
freeAttr: The attribute node destructor... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
261 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
262 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
263 |
freeAttr(struct nodeStruct *ap) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
264 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
265 |
char *value; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
266 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
267 |
value = ap->nodeValue.attr.value; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
268 |
if (value) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
269 |
freeMem(value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
270 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
271 |
FREENODE(ap); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
272 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
273 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
274 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
275 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
276 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
277 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
278 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
279 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
280 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
281 |
hashValue: Generates the arithmetic sum of the bytes of the string |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
282 |
specified by "str". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
283 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
284 |
static unsigned int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
285 |
hashValue(char *str) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
286 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
287 |
unsigned int ret = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
288 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
289 |
while (*str) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
290 |
ret += (unsigned int)*str; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
291 |
str++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
292 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
293 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
294 |
return(ret); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
295 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
296 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
297 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
298 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
299 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
300 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
301 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
302 |
dupString: Given a non-null pointer to a string, allocates memory |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
303 |
sufficient to contain a copy of the string pointed to by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
304 |
"str", copies the string to the newly allocated memory, and |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
305 |
returns a pointer to the new string. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
306 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
307 |
static char * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
308 |
dupString(char *str) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
309 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
310 |
int len; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
311 |
char *ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
312 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
313 |
if (str) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
314 |
len = strlen(str) + 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
315 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
316 |
ptr = (char *)allocMem(len); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
317 |
if (ptr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
318 |
(void)memcpy(ptr, str, len); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
319 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
320 |
return(ptr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
321 |
} else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
322 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
323 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
324 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
325 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
326 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
327 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
328 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
329 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
330 |
searchNodeList: Searches next-wise along a list, starting at the node |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
331 |
pointed to by "node", until either the end of the list is |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
332 |
found, or a node whose name matches the string pointed to by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
333 |
"name". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
334 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
335 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
336 |
searchNodeList(struct nodeStruct *node, char *name) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
337 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
338 |
unsigned int nameHash; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
339 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
340 |
nameHash = hashValue(name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
341 |
while (node) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
342 |
if ((nameHash == node->hashValue) && !strcmp(name, node->name)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
343 |
break; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
344 |
node = node->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
345 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
346 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
347 |
return(node); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
348 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
349 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
350 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
351 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
352 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
353 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
354 |
searchClass: Searches for the class node whose name matches the string |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
355 |
pointed to by "class". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
356 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
357 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
358 |
searchClass(char *class) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
359 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
360 |
if (OWconfigDatabase.head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
361 |
return(searchNodeList(OWconfigDatabase.head, class)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
362 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
363 |
return((struct nodeStruct *)NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
364 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
365 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
366 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
367 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
368 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
369 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
370 |
searchInstance: Searches for the instance node identified by "name", |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
371 |
parented by the class node identified by "class". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
372 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
373 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
374 |
searchInstance(char *class, char *name) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
375 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
376 |
struct nodeStruct *cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
377 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
378 |
cp = searchClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
379 |
if (cp && cp->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
380 |
return(searchNodeList(cp->head, name)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
381 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
382 |
return((struct nodeStruct *)NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
383 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
384 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
385 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
386 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
387 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
388 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
389 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
390 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
391 |
searchAttr: Searches for the attribute node identified by "attr", |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
392 |
parented by the instance node identified by "name", |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
393 |
which in turn is parented by the class node identified by "class". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
394 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
395 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
396 |
searchAttr(char *class, char *name, char *attr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
397 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
398 |
struct nodeStruct *instanceNode; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
399 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
400 |
instanceNode = searchInstance(class, name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
401 |
if (instanceNode && instanceNode->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
402 |
return(searchNodeList(instanceNode->head, attr)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
403 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
404 |
return((struct nodeStruct *)NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
405 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
406 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
407 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
408 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
409 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
410 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
411 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
412 |
createClass: Creates a new class node within the OWconfig database. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
413 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
414 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
415 |
createClass(char *class) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
416 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
417 |
struct nodeStruct *cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
418 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
419 |
cp = (struct nodeStruct *)allocMem(sizeof(struct nodeStruct)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
420 |
if (!cp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
421 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
422 |
cp->name = dupString(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
423 |
if (!cp->name) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
424 |
freeMem(cp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
425 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
426 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
427 |
cp->hashValue = hashValue(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
428 |
cp->parent = &OWconfigDatabase; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
429 |
cp->head = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
430 |
cp->tail = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
431 |
cp->nodeFree = freeClass; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
432 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
433 |
if (!OWconfigDatabase.head) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
434 |
OWconfigDatabase.head = cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
435 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
436 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
437 |
cp->prev = OWconfigDatabase.tail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
438 |
cp->next = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
439 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
440 |
if (OWconfigDatabase.tail) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
441 |
OWconfigDatabase.tail->next = cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
442 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
443 |
OWconfigDatabase.tail = cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
444 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
445 |
return(cp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
446 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
447 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
448 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
449 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
450 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
451 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
452 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
453 |
createInstance: Creates a new instance node parented by the class node |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
454 |
identified by "class". The instance node will be identified |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
455 |
by "name". If the class node does not already exist, it will |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
456 |
be created. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
457 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
458 |
static struct nodeStruct * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
459 |
createInstance(char *class, char *name) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
460 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
461 |
struct nodeStruct *cp, *ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
462 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
463 |
cp = searchClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
464 |
if (!cp) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
465 |
cp = createClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
466 |
if (!cp) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
467 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
468 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
469 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
470 |
ip = (struct nodeStruct *)allocMem(sizeof(struct nodeStruct)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
471 |
if (!ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
472 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
473 |
ip->name = dupString(name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
474 |
if (!ip->name) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
475 |
freeMem(ip); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
476 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
477 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
478 |
ip->hashValue = hashValue(name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
479 |
ip->parent = cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
480 |
ip->head = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
481 |
ip->tail = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
482 |
ip->nodeFree = freeInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
483 |
ip->nodeValue.instance.pkg = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
484 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
485 |
if (OWconfigFlags & OWFLAG_RETAIN) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
486 |
if (instanceListTail) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
487 |
if (instanceListTail->nodeValue.instance.lineNumber == |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
488 |
lineNumber) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
489 |
lineNumber++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
490 |
ip->nodeValue.instance.lineNumber = lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
491 |
ip->nodeValue.instance.nextInstance = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
492 |
ip->nodeValue.instance.prevInstance = instanceListTail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
493 |
instanceListTail->nodeValue.instance.nextInstance = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
494 |
instanceListTail = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
495 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
496 |
instanceListHead = instanceListTail = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
497 |
ip->nodeValue.instance.lineNumber = lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
498 |
ip->nodeValue.instance.nextInstance = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
499 |
ip->nodeValue.instance.prevInstance = NULL;; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
500 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
501 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
502 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
503 |
if (!cp->head) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
504 |
cp->head = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
505 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
506 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
507 |
ip->prev = cp->tail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
508 |
ip->next = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
509 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
510 |
if (cp->tail) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
511 |
cp->tail->next = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
512 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
513 |
cp->tail = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
514 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
515 |
return(ip); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
516 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
517 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
518 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
519 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
520 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
521 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
522 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
523 |
unlockOWconfig: Remove the read or write lock from an OWconfig file. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
524 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
525 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
526 |
unlockOWconfig(int f) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
527 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
528 |
/* 4007038 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
529 |
Remvoe any read/write locking/unlocking. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
530 |
flock_t lockStruct; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
531 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
532 |
lockStruct.l_type = F_UNLCK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
533 |
lockStruct.l_whence = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
534 |
lockStruct.l_start = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
535 |
lockStruct.l_len = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
536 |
(void)fcntl(f, F_SETLK, &lockStruct); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
537 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
538 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
539 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
540 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
541 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
542 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
543 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
544 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
545 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
546 |
readLockOWconfig: Place a read lock on an OWconfig file. Should only |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
547 |
fail if the file is write locked. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
548 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
549 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
550 |
readLockOWconfig(int f) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
551 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
552 |
/* 4007038 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
553 |
Do not do any read locking. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
554 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
555 |
int result; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
556 |
flock_t lockStruct; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
557 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
558 |
lockStruct.l_type = F_RDLCK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
559 |
lockStruct.l_whence = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
560 |
lockStruct.l_start = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
561 |
lockStruct.l_len = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
562 |
result = fcntl(f, F_SETLK, &lockStruct); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
563 |
if (result != -1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
564 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
565 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
566 |
return(OWCFG_LOCK1FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
567 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
568 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
569 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
570 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
571 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
572 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
573 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
574 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
575 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
576 |
writeLockOWconfig: Place a write lock on an OWconfig file. Will fail |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
577 |
if any other locks, read or write, are already on the file. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
578 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
579 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
580 |
writeLockOWconfig(int f) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
581 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
582 |
/* 4007038 |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
583 |
Do not do any write locking. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
584 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
585 |
int result; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
586 |
flock_t lockStruct; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
587 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
588 |
lockStruct.l_type = F_WRLCK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
589 |
lockStruct.l_whence = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
590 |
lockStruct.l_start = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
591 |
lockStruct.l_len = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
592 |
result = fcntl(f, F_SETLK, &lockStruct); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
593 |
if (result != -1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
594 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
595 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
596 |
return(OWCFG_LOCK1FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
597 |
*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
598 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
599 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
600 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
601 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
602 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
603 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
604 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
605 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
606 |
accumulateComment: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
607 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
608 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
609 |
accumulateComment(char *comment, int lineNumber) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
610 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
611 |
int len; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
612 |
struct commentStruct *newComment; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
613 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
614 |
len = strlen(comment); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
615 |
if (len == 0) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
616 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
617 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
618 |
if (*comment =='\n') |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
619 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
620 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
621 |
newComment = (struct commentStruct *) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
622 |
allocMem(len + 1 + sizeof(struct commentStruct)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
623 |
newComment->comment = (char *)newComment + |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
624 |
sizeof(struct commentStruct); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
625 |
strcpy(newComment->comment, comment); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
626 |
newComment->lineNumber = lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
627 |
newComment->next = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
628 |
if (lastComment != NULL) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
629 |
lastComment->next = newComment; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
630 |
lastComment = newComment; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
631 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
632 |
commentList = lastComment = newComment; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
633 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
634 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
635 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
636 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
637 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
638 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
639 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
640 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
641 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
642 |
freeComments: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
643 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
644 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
645 |
freeComments(void) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
646 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
647 |
struct commentStruct *commentP = commentList; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
648 |
struct commentStruct *next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
649 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
650 |
while (commentP) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
651 |
next = commentP->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
652 |
freeMem(commentP); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
653 |
commentP = next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
654 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
655 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
656 |
commentList = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
657 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
658 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
659 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
660 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
661 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
662 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
663 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
664 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
665 |
initDatabase: If a database already exists, free it, and set the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
666 |
OWconfigDatabase structure to a known state. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
667 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
668 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
669 |
initDatabase(void) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
670 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
671 |
if (databaseValid) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
672 |
freeNodeList(OWconfigDatabase.head); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
673 |
freeMem(readFile1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
674 |
readFile1 = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
675 |
freeMem(readFile2); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
676 |
readFile2 = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
677 |
freeComments(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
678 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
679 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
680 |
databaseValid = 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
681 |
OWconfigDatabase.head = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
682 |
OWconfigDatabase.tail = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
683 |
OWconfigDatabase.next = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
684 |
OWconfigDatabase.prev = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
685 |
OWconfigDatabase.nodeFree = (void (*)())0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
686 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
687 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
688 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
689 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
690 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
691 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
692 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
693 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
694 |
reAllocMem: Because we don't really want to add another parameter to |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
695 |
OWconfigInit..., we implement a realloc routine that uses |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
696 |
the allocMem and freeMem routines specified by OWconfigInit. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
697 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
698 |
static char * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
699 |
reAllocMem(char *ptr, unsigned int oldSize, unsigned int newSize) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
700 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
701 |
char *newPtr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
702 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
703 |
if (newSize <= oldSize) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
704 |
return(ptr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
705 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
706 |
newPtr = allocMem(newSize); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
707 |
if (newPtr) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
708 |
memcpy(newPtr, ptr, oldSize); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
709 |
freeMem(ptr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
710 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
711 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
712 |
return(newPtr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
713 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
714 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
715 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
716 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
717 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
718 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
719 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
720 |
readLine: Read the file, line by line, until an "interesting" line |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
721 |
is encountered. Maintain a line number counter along the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
722 |
way. When a line is found, fill "lineBuf" with the data. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
723 |
It is the responsibility of the caller to free the dynamically |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
724 |
allocated line buffer. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
725 |
Note: Need to find proper way to use ctype functions... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
726 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
727 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
728 |
readLine(FILE *fp, char **lineBuf, int *lineNumber) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
729 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
730 |
char *result; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
731 |
int lineBufSize = LINEALLOCUNIT+1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
732 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
733 |
(*lineNumber)++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
734 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
735 |
*lineBuf = (char *)allocMem(lineBufSize); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
736 |
if (!*lineBuf) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
737 |
return(EOF); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
738 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
739 |
result = fgets(*lineBuf, LINEALLOCUNIT, fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
740 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
741 |
if (result) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
742 |
int bufLen = strlen(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
743 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
744 |
while (result[bufLen-1] != 0xa) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
745 |
char *newBuf; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
746 |
int newBufSize; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
747 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
748 |
newBufSize = lineBufSize + LINEALLOCUNIT; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
749 |
newBuf = reAllocMem(*lineBuf, lineBufSize, newBufSize); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
750 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
751 |
if (!newBuf) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
752 |
freeMem(*lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
753 |
*lineBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
754 |
return(EOF); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
755 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
756 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
757 |
*lineBuf = newBuf; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
758 |
lineBufSize = newBufSize; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
759 |
result = fgets((newBuf)+bufLen, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
760 |
LINEALLOCUNIT, fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
761 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
762 |
if (!result) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
763 |
freeMem(*lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
764 |
*lineBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
765 |
return(EOF); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
766 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
767 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
768 |
bufLen = strlen(newBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
769 |
result = newBuf; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
770 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
771 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
772 |
while (isspace(*result) && *result != '#' && *result) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
773 |
result++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
774 |
if (*result == '#' || *result == (char)0) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
775 |
if (OWconfigFlags & OWFLAG_RETAIN) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
776 |
accumulateComment(*lineBuf, *lineNumber); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
777 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
778 |
freeMem(*lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
779 |
return(readLine(fp, lineBuf, lineNumber)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
780 |
} else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
781 |
return(1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
782 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
783 |
return(EOF); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
784 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
785 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
786 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
787 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
788 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
789 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
790 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
791 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
792 |
readPair: Starting at character position "charPos" in "lineBuf", |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
793 |
search for an expression of appx. the following syntax: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
794 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
795 |
<alnum>{<whitespace>}<equal>{<whitespace>}\ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
796 |
(<quote><anything goes, even \ stuff><quote>) | \ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
797 |
<alnum> |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
798 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
799 |
If such an expression is found, "nameBuf" is filled with the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
800 |
value to the left of the = and "valBuf" is filled with the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
801 |
value to the right of the =. "charPos" will be updated to |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
802 |
point at the next candidate expression. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
803 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
804 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
805 |
readPair(char *lineBuf, char *nameBuf, char *valBuf, int *charPos) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
806 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
807 |
char *ptr = lineBuf + *charPos; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
808 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
809 |
/*** Skip whitespace preceding name... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
810 |
while (*ptr && isspace(*ptr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
811 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
812 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
813 |
if ((!isalnum(*ptr)) || *ptr == (char)0 || *ptr == ';') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
814 |
*charPos = (int)(ptr - lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
815 |
if (*ptr == (char)0 || *ptr == ';') |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
816 |
return(!OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
817 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
818 |
return(OWCFG_SYNTAX1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
819 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
820 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
821 |
/*** Get name... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
822 |
while (*ptr && isalnum(*ptr)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
823 |
*nameBuf = *ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
824 |
nameBuf++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
825 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
826 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
827 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
828 |
*nameBuf = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
829 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
830 |
/*** Skip "=" and whitespace preceding open quote or string...***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
831 |
while (*ptr && (*ptr=='=' || isspace(*ptr))) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
832 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
833 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
834 |
if (*ptr == (char)0) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
835 |
*charPos = (int)(ptr - lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
836 |
return(OWCFG_SYNTAX1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
837 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
838 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
839 |
if (*ptr == '"') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
840 |
/*** Fetch quote delimited string... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
841 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
842 |
while (*ptr && *ptr != '"') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
843 |
if (*ptr == '\\') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
844 |
if (!*(++ptr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
845 |
break; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
846 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
847 |
*valBuf = *ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
848 |
valBuf++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
849 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
850 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
851 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
852 |
/*** Fetch white space terminated string... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
853 |
while (*ptr && (*ptr != ';') && (!isspace(*ptr))) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
854 |
if (*ptr == '\\') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
855 |
if (!*(++ptr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
856 |
break; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
857 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
858 |
*valBuf = *ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
859 |
valBuf++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
860 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
861 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
862 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
863 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
864 |
*valBuf = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
865 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
866 |
/*** Skip past terminating character, if any. ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
867 |
if (*ptr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
868 |
ptr++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
869 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
870 |
*charPos = (int)(ptr - lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
871 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
872 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
873 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
874 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
875 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
876 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
877 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
878 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
879 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
880 |
readOWconfig: Read the OWconfig database file named by "fileName". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
881 |
The internal database is built and the file's last modified time |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
882 |
is returned in "timeStamp". If anything goes wrong, it is |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
883 |
the caller's responsibility to clean up the database. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
884 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
885 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
886 |
readOWconfig(char *fileName, time_t *timeStamp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
887 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
888 |
char *lineBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
889 |
char nameBuf[MAXVALLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
890 |
char *valBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
891 |
char classVal[MAXVALLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
892 |
char nameVal[MAXVALLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
893 |
char pkgVal[MAXVALLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
894 |
int skipping = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
895 |
FILE *fp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
896 |
struct stat statbuf; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
897 |
int result; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
898 |
int syntaxResult = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
899 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
900 |
fp = fopen(fileName, "r"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
901 |
if (!fp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
902 |
return(OWCFG_OPEN1FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
903 |
if (readLockOWconfig(fileno(fp)) != OWCFG_OK) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
904 |
(void)fclose(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
905 |
return(OWCFG_LOCK1FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
906 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
907 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
908 |
classVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
909 |
nameVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
910 |
pkgVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
911 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
912 |
strcpy(currentPackage, defaultOldPkgName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
913 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
914 |
while (readLine(fp, &lineBuf, &lineNumber) != EOF) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
915 |
int charPos; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
916 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
917 |
valBuf = allocMem(strlen(lineBuf)+1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
918 |
if (!valBuf) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
919 |
freeMem(lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
920 |
unlockOWconfig(fileno(fp)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
921 |
fclose(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
922 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
923 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
924 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
925 |
charPos = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
926 |
while ((result = readPair(lineBuf, nameBuf, valBuf, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
927 |
&charPos)) == OWCFG_OK) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
928 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
929 |
/*** class=<value> ??? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
930 |
if (!strcmp(nameBuf, "class")) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
931 |
(void)strcpy(classVal, valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
932 |
skipping = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
933 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
934 |
/*** name=<value> ??? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
935 |
} else if (!strcmp(nameBuf, "name")) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
936 |
(void)strcpy(nameVal, valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
937 |
skipping = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
938 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
939 |
/*** package=<value> ??? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
940 |
} else if (!strcmp(nameBuf, "package")) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
941 |
(void)strcpy(currentPackage, valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
942 |
skipping = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
943 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
944 |
/*** <attr>=<value> ??? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
945 |
} else if (*classVal != (char)0 && *nameVal != (char)0) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
946 |
result = OWconfigSetAttribute(classVal, nameVal, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
947 |
nameBuf, valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
948 |
if (result != OWCFG_OK) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
949 |
unlockOWconfig(fileno(fp)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
950 |
(void)fclose(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
951 |
if (lineBuf) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
952 |
freeMem(lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
953 |
if (valBuf) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
954 |
freeMem(valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
955 |
return(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
956 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
957 |
skipping = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
958 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
959 |
/*** BLAMMO (TM)... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
960 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
961 |
if (!skipping) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
962 |
(void)fprintf(stderr,"%s\n",lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
963 |
(void)fprintf(stderr,"^^^ Bad class instance, line %d, ^^^\n", lineNumber-lastLineNumber); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
964 |
(void)fprintf(stderr," in file %s.\n", fileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
965 |
skipping = 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
966 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
967 |
classVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
968 |
nameVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
969 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
970 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
971 |
} /* while readPair... */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
972 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
973 |
if (result == OWCFG_SYNTAX1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
974 |
syntaxResult = result; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
975 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
976 |
if (lineBuf[charPos] == ';') { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
977 |
classVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
978 |
nameVal[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
979 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
980 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
981 |
if (lineBuf) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
982 |
freeMem(lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
983 |
lineBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
984 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
985 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
986 |
if (valBuf) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
987 |
freeMem(valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
988 |
valBuf = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
989 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
990 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
991 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
992 |
} /* while readLine... */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
993 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
994 |
if (lineBuf) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
995 |
freeMem(lineBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
996 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
997 |
if (valBuf) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
998 |
freeMem(valBuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
999 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1000 |
(void)fstat(fileno(fp), &statbuf); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1001 |
*timeStamp = statbuf.st_mtime; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1002 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1003 |
unlockOWconfig(fileno(fp)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1004 |
(void)fclose(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1005 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1006 |
return(syntaxResult); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1007 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1008 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1009 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1010 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1011 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1012 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1013 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1014 |
writeString: Writes to "fp" a quoted string specified by "str". Does |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1015 |
the necessary \ stuff. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1016 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1017 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1018 |
writeString(FILE *fp, char *str) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1019 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1020 |
if (str) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1021 |
(void)fputc('"', fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1022 |
while (*str) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1023 |
if (*str == '\\' || *str == '"') |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1024 |
(void)fputc('\\', fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1025 |
(void)fputc(*str, fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1026 |
str++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1027 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1028 |
(void)fputc('"', fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1029 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1030 |
(void)fprintf(fp, "\"\""); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1031 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1032 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1033 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1034 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1035 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1036 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1037 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1038 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1039 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1040 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1041 |
writeDatabase: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1042 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1043 |
static void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1044 |
writeDatabase(FILE *fp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1045 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1046 |
struct nodeStruct *cp, *ip, *ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1047 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1048 |
/*** Need to do something about Copyright notices... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1049 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1050 |
currentPackage[0] = (char)0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1051 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1052 |
if (OWconfigFlags && OWFLAG_RETAIN) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1053 |
struct commentStruct *commentP = commentList; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1054 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1055 |
ip = instanceListHead; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1056 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1057 |
/*** Write database in something resembling |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1058 |
original source order... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1059 |
***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1060 |
while (ip) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1061 |
char *pkg = ip->nodeValue.instance.pkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1062 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1063 |
cp = ip->parent; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1064 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1065 |
while (commentP && (commentP->lineNumber < |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1066 |
ip->nodeValue.instance.lineNumber)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1067 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1068 |
(void)fprintf(fp, "%s", commentP->comment); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1069 |
commentP = commentP->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1070 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1071 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1072 |
/*** Start new package? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1073 |
if (strcmp(currentPackage, pkg)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1074 |
(void)strcpy(currentPackage, pkg); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1075 |
(void)fprintf(fp, "\npackage="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1076 |
writeString(fp, currentPackage); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1077 |
(void)fprintf(fp, "\n\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1078 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1079 |
(void)fprintf(fp, "class="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1080 |
writeString(fp, cp->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1081 |
(void)fprintf(fp, " "); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1082 |
(void)fprintf(fp, "name="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1083 |
writeString(fp, ip->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1084 |
(void)fprintf(fp, "\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1085 |
for (ap = ip->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1086 |
ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1087 |
ap = ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1088 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1089 |
(void)fprintf(fp, " %s=", ap->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1090 |
writeString(fp, ap->nodeValue.attr.value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1091 |
if (ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1092 |
(void)fprintf(fp, "\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1093 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1094 |
(void)fprintf(fp, ";\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1095 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1096 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1097 |
ip = ip->nodeValue.instance.nextInstance; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1098 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1099 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1100 |
while (commentP) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1101 |
(void)fprintf(fp, "%s", commentP->comment); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1102 |
commentP = commentP->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1103 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1104 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1105 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1106 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1107 |
/*** Write database, class by class... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1108 |
for (cp = OWconfigDatabase.head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1109 |
cp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1110 |
cp = cp->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1111 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1112 |
for (ip = cp->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1113 |
ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1114 |
ip = ip->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1115 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1116 |
char *pkg = ip->nodeValue.instance.pkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1117 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1118 |
/*** Start new package? ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1119 |
if (strcmp(currentPackage, pkg)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1120 |
(void)strcpy(currentPackage, pkg); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1121 |
(void)fprintf(fp, "package="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1122 |
writeString(fp, currentPackage); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1123 |
(void)fprintf(fp, "\n\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1124 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1125 |
(void)fprintf(fp, "class="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1126 |
writeString(fp, cp->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1127 |
(void)fprintf(fp, " "); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1128 |
(void)fprintf(fp, "name="); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1129 |
writeString(fp, ip->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1130 |
(void)fprintf(fp, "\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1131 |
for (ap = ip->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1132 |
ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1133 |
ap = ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1134 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1135 |
(void)fprintf(fp, " %s=", ap->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1136 |
writeString(fp, ap->nodeValue.attr.value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1137 |
if (ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1138 |
(void)fprintf(fp, "\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1139 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1140 |
(void)fprintf(fp, ";\n"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1141 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1142 |
} /* for */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1143 |
} /* for */ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1144 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1145 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1146 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1147 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1148 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1149 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1150 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1151 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1152 |
writeOWconfig: Writes the internal database, in OWconfig syntax, to |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1153 |
the file specified by fileName. As a precaution, the original |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1154 |
file is preserved, renamed as <filename>.BAK. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1155 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1156 |
Note: I'm concerned that a more sophisticated locking mechanism might be |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1157 |
more trouble prone than this one. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1158 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1159 |
static int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1160 |
writeOWconfig(char *fileName) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1161 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1162 |
FILE *fp; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1163 |
char tmpFileName[FNLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1164 |
char bakFileName[FNLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1165 |
char pidString[FNLENGTH]; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1166 |
int f; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1167 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1168 |
(void)sprintf(pidString, ".%d", getpid()); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1169 |
(void)strcpy(tmpFileName, fileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1170 |
(void)strcat(tmpFileName, pidString); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1171 |
(void)strcpy(bakFileName, fileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1172 |
(void)strcat(bakFileName, ".BAK"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1173 |
fp = fopen(tmpFileName, "w"); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1174 |
if (!fp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1175 |
return(OWCFG_OPENTMPFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1176 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1177 |
writeDatabase(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1178 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1179 |
(void)fclose(fp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1180 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1181 |
/*** Try write locking current OWconfig file... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1182 |
f = open(fileName, O_WRONLY); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1183 |
if (f == -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1184 |
if (errno != ENOENT) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1185 |
(void)unlink(tmpFileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1186 |
return(OWCFG_OPENWFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1187 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1188 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1189 |
if (writeLockOWconfig(f) != OWCFG_OK) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1190 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1191 |
(void)unlink(tmpFileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1192 |
return(OWCFG_LOCKWFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1193 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1194 |
if (rename(fileName, bakFileName) == -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1195 |
unlockOWconfig(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1196 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1197 |
(void)unlink(tmpFileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1198 |
return(OWCFG_RENAMEFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1199 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1200 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1201 |
if (rename(tmpFileName, fileName) == -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1202 |
if (f != -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1203 |
(void)rename(bakFileName, fileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1204 |
unlockOWconfig(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1205 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1206 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1207 |
(void)unlink(tmpFileName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1208 |
return(OWCFG_RENAMEFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1209 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1210 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1211 |
unlockOWconfig(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1212 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1213 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1214 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1215 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1216 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1217 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1218 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1219 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1220 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1221 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1222 |
**************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1223 |
Exported functions... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1224 |
**************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1225 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1226 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1227 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1228 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1229 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1230 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1231 |
OWconfigSetPackage: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1232 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1233 |
This function establishes the name of the package to associate with |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1234 |
database resources created by subsequent calls to OWconfigSetAttribute or |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1235 |
OWconfigCreateClass. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1236 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1237 |
Return: None. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1238 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1239 |
void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1240 |
OWconfigSetPackage(char *package) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1241 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1242 |
if (package) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1243 |
(void)strcpy(currentPackage, package); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1244 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1245 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1246 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1247 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1248 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1249 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1250 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1251 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1252 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1253 |
OWconfigRemovePackage: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1254 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1255 |
This function removes any resources from the database that were |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1256 |
associated with the named package. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1257 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1258 |
Return: OWCFG_OK or !OWCFG_OK. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1259 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1260 |
Note: The data structure is not really optimal for searching by package, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1261 |
but performance isn't really critical here. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1262 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1263 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1264 |
OWconfigRemovePackage(char *package) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1265 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1266 |
struct nodeStruct *cp, *ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1267 |
int result = OWCFG_PKGNAME; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1268 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1269 |
if (!package) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1270 |
return(OWCFG_ARGS); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1271 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1272 |
cp = OWconfigDatabase.head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1273 |
while (cp) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1274 |
ip = cp->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1275 |
while(ip) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1276 |
char *pkg = ip->nodeValue.instance.pkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1277 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1278 |
if (pkg && !strcmp(pkg, package)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1279 |
struct nodeStruct *next = ip->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1280 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1281 |
ip->nodeFree(ip); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1282 |
ip = next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1283 |
result = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1284 |
continue; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1285 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1286 |
ip = ip->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1287 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1288 |
cp = cp->next; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1289 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1290 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1291 |
return(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1292 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1293 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1294 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1295 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1296 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1297 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1298 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1299 |
OWconfigSetInstance: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1300 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1301 |
"OWconfigSetInstance" is a convenient front end to "OWconfigSetAttribute". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1302 |
It takes a list of attributes and adds them to an instance of a class. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1303 |
If that class and/or instance does not already exist, they are or it is created.If that instance does exist, replacements, when necessary, occur on a per |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1304 |
attribute/value pair basis, otherwise they are merely added to the instance. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1305 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1306 |
Return: OWCFG_OK or !OWCFG_OK(could occur during an out of memory condition). |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1307 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1308 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1309 |
OWconfigSetInstance(char *class, char *name, OWconfigAttributePtr attr, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1310 |
int numberInattr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1311 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1312 |
OWconfigAttributePtr limit; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1313 |
int result = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1314 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1315 |
if (!(class && name && attr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1316 |
return(OWCFG_ARGS); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1317 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1318 |
limit = attr + numberInattr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1319 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1320 |
for (;attr < limit; attr++) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1321 |
result = OWconfigSetAttribute(class, name, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1322 |
attr->attribute, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1323 |
attr->value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1324 |
if (result != OWCFG_OK) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1325 |
break; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1326 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1327 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1328 |
return(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1329 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1330 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1331 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1332 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1333 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1334 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1335 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1336 |
OWconfigRemoveInstance: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1337 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1338 |
"OWconfigRemoveInstance" removes an instance of a class, identified by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1339 |
"class" and "name". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1340 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1341 |
Return: OWCFG_OK or !OWCFG_OK |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1342 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1343 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1344 |
OWconfigRemoveInstance(char *class, char *name) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1345 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1346 |
struct nodeStruct *ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1347 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1348 |
if (!(class && name)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1349 |
return(OWCFG_ARGS); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1350 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1351 |
ip = searchInstance(class, name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1352 |
if (!ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1353 |
return(OWCFG_INSTANCENAME); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1354 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1355 |
ip->nodeFree(ip); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1356 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1357 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1358 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1359 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1360 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1361 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1362 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1363 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1364 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1365 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1366 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1367 |
OWconfigSetAttribute: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1368 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1369 |
"OWconfigSetAttribute" takes an attribute/value pair and adds it to an |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1370 |
instance of a class. If that class and/or instance does not already |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1371 |
exist, they are or it is created. If the named attribute already exists |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1372 |
within the instance, it is replaced. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1373 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1374 |
Return: OWCFG_OK or !OWCFG_OK(could occur during with out of memory condition). |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1375 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1376 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1377 |
OWconfigSetAttribute(char *class, char *name, char *attribute, char *value) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1378 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1379 |
struct nodeStruct *cp, *ip, *ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1380 |
char *tmpPkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1381 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1382 |
if (!(class && name && attribute && value)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1383 |
return(OWCFG_ARGS); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1384 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1385 |
cp = searchClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1386 |
if (!cp) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1387 |
cp = createClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1388 |
if (!cp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1389 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1390 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1391 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1392 |
ip = searchNodeList(cp->head, name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1393 |
if (!ip) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1394 |
ip = createInstance(class, name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1395 |
if (!ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1396 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1397 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1398 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1399 |
ap = searchNodeList(ip->head, attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1400 |
if (ap) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1401 |
if (ap->nodeValue.attr.value) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1402 |
freeMem(ap->nodeValue.attr.value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1403 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1404 |
ap = (struct nodeStruct *) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1405 |
allocMem(sizeof(struct nodeStruct)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1406 |
if (!ap) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1407 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1408 |
ap->name = dupString(attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1409 |
if (!ap->name) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1410 |
freeMem(ap); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1411 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1412 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1413 |
ap->hashValue = hashValue(attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1414 |
ap->parent = ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1415 |
ap->head = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1416 |
ap->tail = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1417 |
ap->nodeFree = freeAttr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1418 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1419 |
if (!ip->head) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1420 |
ip->head = ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1421 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1422 |
ap->prev = ip->tail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1423 |
ap->next = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1424 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1425 |
if (ip->tail) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1426 |
ip->tail->next = ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1427 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1428 |
ip->tail = ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1429 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1430 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1431 |
ap->nodeValue.attr.value = dupString(value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1432 |
if (!ap->nodeValue.attr.value) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1433 |
freeAttr(ap); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1434 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1435 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1436 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1437 |
if (!ip->nodeValue.instance.pkg) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1438 |
tmpPkg = dupString(currentPackage); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1439 |
if (!tmpPkg) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1440 |
return(OWCFG_ALLOC); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1441 |
ip->nodeValue.instance.pkg = tmpPkg; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1442 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1443 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1444 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1445 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1446 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1447 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1448 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1449 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1450 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1451 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1452 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1453 |
OWconfigGetClassNames: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1454 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1455 |
"OWconfigGetClassNames" returns a list of the names of all the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1456 |
instances of the named class. The end of the list is indicated by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1457 |
a NULL pointer. All users of this function may call "OWconfigFreeClassNames" |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1458 |
to free the list and the strings it points to. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1459 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1460 |
Return: (char **) to list of class instance names or NULL if class did |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1461 |
not exist. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1462 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1463 |
char ** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1464 |
OWconfigGetClassNames(char *class) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1465 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1466 |
struct nodeStruct *cp, *ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1467 |
int instanceCount = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1468 |
char **listOfString, **ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1469 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1470 |
if (!class) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1471 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1472 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1473 |
cp = searchClass(class); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1474 |
if (!cp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1475 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1476 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1477 |
/*** Count the number of instances in the class... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1478 |
for (ip=cp->head; ip; ip=ip->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1479 |
instanceCount++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1480 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1481 |
listOfString = (char **)allocMem((instanceCount+1) * sizeof(char *)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1482 |
if (listOfString) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1483 |
for (ptr=listOfString, ip=cp->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1484 |
ip; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1485 |
ptr++, ip=ip->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1486 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1487 |
*ptr = dupString(ip->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1488 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1489 |
/*** If dupString fails, free previously allocated |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1490 |
strings and return NULL... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1491 |
***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1492 |
if (!(*ptr)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1493 |
char **limit = ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1494 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1495 |
for (ptr = listOfString; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1496 |
ptr < limit; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1497 |
ptr++) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1498 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1499 |
freeMem(*ptr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1500 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1501 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1502 |
freeMem(listOfString); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1503 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1504 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1505 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1506 |
*ptr = NULL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1507 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1508 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1509 |
return(listOfString); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1510 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1511 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1512 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1513 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1514 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1515 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1516 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1517 |
OWconfigFreeClassNames: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1518 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1519 |
"OWconfigFreeClassNames" frees the list of class names returned by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1520 |
"OWconfigGetClassNames". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1521 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1522 |
void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1523 |
OWconfigFreeClassNames(char **list) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1524 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1525 |
char **ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1526 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1527 |
if (!list) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1528 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1529 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1530 |
for (ptr = list; *ptr; ptr++) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1531 |
freeMem(*ptr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1532 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1533 |
freeMem(list); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1534 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1535 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1536 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1537 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1538 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1539 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1540 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1541 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1542 |
OWconfigGetInstance: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1543 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1544 |
"OWconfigGetInstance" returns a list of attribute definitions belonging |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1545 |
to the instance identified by "class" and "name". Use "OWconfigFreeInstance" |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1546 |
to free the memory allocated to the information returned by |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1547 |
"OWconfigGetInstance". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1548 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1549 |
Return: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1550 |
OWconfigAttributePtr or NULL (if instance doesn't exist). |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1551 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1552 |
OWconfigAttributePtr |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1553 |
OWconfigGetInstance(char *class, char *name, int *numberInAttr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1554 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1555 |
struct nodeStruct *ip, *ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1556 |
int attrCount = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1557 |
OWconfigAttributePtr replyPtr, ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1558 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1559 |
if ((!class) || (!name) || (!numberInAttr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1560 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1561 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1562 |
ip = searchInstance(class, name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1563 |
if (!ip) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1564 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1565 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1566 |
/*** Count the number of attributes in the instance... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1567 |
for (ap = ip->head; ap; ap=ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1568 |
attrCount++; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1569 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1570 |
replyPtr = (OWconfigAttributePtr)allocMem(attrCount * sizeof(*replyPtr)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1571 |
if (replyPtr) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1572 |
for (ptr=replyPtr, ap=ip->head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1573 |
ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1574 |
ptr++, ap=ap->next) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1575 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1576 |
ptr->attribute = dupString(ap->name); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1577 |
ptr->value = dupString(ap->nodeValue.attr.value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1578 |
if ((!ptr->attribute) || (!ptr->value)) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1579 |
OWconfigAttributePtr limit=ptr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1580 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1581 |
if (ptr->attribute) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1582 |
freeMem(ptr->attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1583 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1584 |
freeMem(ptr->value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1585 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1586 |
for (ptr = replyPtr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1587 |
ptr < limit; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1588 |
ptr++) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1589 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1590 |
freeMem(ptr->attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1591 |
freeMem(ptr->value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1592 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1593 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1594 |
freeMem(replyPtr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1595 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1596 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1597 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1598 |
*numberInAttr = attrCount; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1599 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1600 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1601 |
return(replyPtr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1602 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1603 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1604 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1605 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1606 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1607 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1608 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1609 |
OWconfigFreeInstance: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1610 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1611 |
"OWconfigFreeInstance" frees the data returned by OWconfigGetInstance. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1612 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1613 |
void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1614 |
OWconfigFreeInstance(OWconfigAttributePtr attr, int numberInAttr) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1615 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1616 |
OWconfigAttributePtr ptr, limit; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1617 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1618 |
if ((!attr) || (!numberInAttr)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1619 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1620 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1621 |
for (ptr = attr, limit = attr + numberInAttr; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1622 |
ptr < limit; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1623 |
ptr++) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1624 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1625 |
freeMem(ptr->attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1626 |
freeMem(ptr->value); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1627 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1628 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1629 |
freeMem(attr); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1630 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1631 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1632 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1633 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1634 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1635 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1636 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1637 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1638 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1639 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1640 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1641 |
OWconfigGetAttribute: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1642 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1643 |
"OWconfigGetAttribute" returns the string value of the requested attribute. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1644 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1645 |
Return: (char *) to value of attribute or NULL if attribute could not |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1646 |
be found. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1647 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1648 |
char * |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1649 |
OWconfigGetAttribute(char *class, char *name, char *attribute) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1650 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1651 |
struct nodeStruct *ap; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1652 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1653 |
if (!(class && name && attribute)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1654 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1655 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1656 |
ap = searchAttr(class, name, attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1657 |
if (ap) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1658 |
return(dupString(ap->nodeValue.attr.value)); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1659 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1660 |
return(NULL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1661 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1662 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1663 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1664 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1665 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1666 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1667 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1668 |
OWconfigFreeAttribute: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1669 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1670 |
"OWconfigFreeAttribute" frees the string returned by OWconfigGetAttribute. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1671 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1672 |
void |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1673 |
OWconfigFreeAttribute(char *attribute) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1674 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1675 |
if (attribute) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1676 |
freeMem(attribute); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1677 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1678 |
return; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1679 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1680 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1681 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1682 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1683 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1684 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1685 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1686 |
OWconfigClose: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1687 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1688 |
If writefile was specified, the existing target file, if any, is write locked |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1689 |
using fcntl. If the lock succeeds, the new OWconfig file is written to the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1690 |
same directory, with a temporary name. The old file is removed and the new |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1691 |
file is renamed to match the old file. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1692 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1693 |
The internal database is freed. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1694 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1695 |
Return: OWCFG_OK or !OWCFG_OK(could occur if write or write lock failed). |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1696 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1697 |
Note: When a file is written, all comments are lost from the |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1698 |
original file(s). When written, the OWconfig entries will be grouped by class. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1699 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1700 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1701 |
OWconfigClose(char *writeFile) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1702 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1703 |
int result = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1704 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1705 |
if (writeFile != NULL) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1706 |
result = writeOWconfig(writeFile); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1707 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1708 |
initDatabase(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1709 |
return(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1710 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1711 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1712 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1713 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1714 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1715 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1716 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1717 |
OWconfigValidate: Verifies that the internal database is up to date |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1718 |
with respect to the database file indicated by the global "readFlags". |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1719 |
If it isn't, the files are re-read and a new internal database is |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1720 |
created. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1721 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1722 |
Return: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1723 |
OWCFG_OK or !OWCFG_OK (if re-read fails). |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1724 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1725 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1726 |
OWconfigValidate(void) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1727 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1728 |
int f; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1729 |
int result=OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1730 |
int validate = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1731 |
struct stat statbuf; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1732 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1733 |
if (readFile1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1734 |
f = open(readFile1, O_RDONLY); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1735 |
if (f == -1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1736 |
return(OWCFG_OPEN1FAIL); /*Leave well enough alone*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1737 |
if (fstat(f, &statbuf) == -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1738 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1739 |
return(OWCFG_FSTAT1FAIL); /*Leave well enough alone*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1740 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1741 |
if (statbuf.st_mtime > readFile1TimeStamp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1742 |
validate = 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1743 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1744 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1745 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1746 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1747 |
if (!validate && readFile2) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1748 |
f = open(readFile2, O_RDONLY); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1749 |
if (f == -1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1750 |
return(OWCFG_OPEN2FAIL); /*Leave well enough alone*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1751 |
if (fstat(f, &statbuf) == -1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1752 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1753 |
return(OWCFG_FSTAT2FAIL); /*Leave well enough alone*/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1754 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1755 |
if (statbuf.st_mtime > readFile2TimeStamp) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1756 |
validate = 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1757 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1758 |
(void)close(f); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1759 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1760 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1761 |
if (validate) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1762 |
struct nodeStruct *oldHead, *oldTail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1763 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1764 |
oldHead = OWconfigDatabase.head; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1765 |
oldTail = OWconfigDatabase.tail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1766 |
/*** Setting databaseValid to zero causes initDatabase() |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1767 |
to NOT free existing database... |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1768 |
***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1769 |
databaseValid = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1770 |
result = OWconfigInit(readFile1, readFile2, OWconfigFlags, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1771 |
allocMem, freeMem); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1772 |
if (result != OWCFG_OK) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1773 |
OWconfigDatabase.head = oldHead; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1774 |
OWconfigDatabase.tail = oldTail; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1775 |
databaseValid = 1; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1776 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1777 |
freeNodeList(oldHead); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1778 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1779 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1780 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1781 |
return(result); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1782 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1783 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1784 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1785 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1786 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1787 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1788 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1789 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1790 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1791 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1792 |
/*************************************************************************** |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1793 |
OWconfigInit: |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1794 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1795 |
"OWconfigInit" will read the OWconfig files named by readfile1 and |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1796 |
readfile2. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1797 |
Class instances and attribute/value pairs read from readfile2 will override |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1798 |
those read from readfile1. The replacement will occur on a per |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1799 |
attribute/value pair basis. Before a database file is read, it is |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1800 |
read locked using the fcntl facility. Immediately after the file |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1801 |
is read, it is unlocked. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1802 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1803 |
Return: OWCFG_OK or !OWCFG_OK. Bogus filepaths can return !OWCFG_OK. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1804 |
If readfile1 and readfile2 are both non-NULL, and the read of |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1805 |
readfile1 succeeds but the read of readfile2 fails, OWCFG_OK |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1806 |
will be returned. Lock test failures will return !OWCFG_OK. |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1807 |
***************************************************************************/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1808 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1809 |
int |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1810 |
OWconfigInit(char *readfile1, char *readfile2, int flags, |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1811 |
void *(*allocmem)(unsigned), void (*freemem)(void *)) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1812 |
{ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1813 |
int result, result1, result2; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1814 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1815 |
if (allocmem) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1816 |
allocMem = allocmem; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1817 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1818 |
allocMem = malloc; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1819 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1820 |
if (freemem) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1821 |
freeMem = freemem; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1822 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1823 |
freeMem = free; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1824 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1825 |
initDatabase(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1826 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1827 |
if (readfile1 != readFile1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1828 |
readFile1 = dupString(readfile1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1829 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1830 |
if (readfile2 != readFile2) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1831 |
readFile2 = dupString(readfile2); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1832 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1833 |
OWconfigFlags = flags; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1834 |
lineNumber = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1835 |
lastLineNumber = 0; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1836 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1837 |
/*** Check for specific corner cases... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1838 |
if (readFile1 == NULL && readFile2 == NULL) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1839 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1840 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1841 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1842 |
/*** Read file 1, if specified... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1843 |
result1 = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1844 |
if (readFile1) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1845 |
result1 = readOWconfig(readFile1, &readFile1TimeStamp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1846 |
if (result1 != OWCFG_OK && result1 != OWCFG_OPEN1FAIL) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1847 |
initDatabase(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1848 |
return(result1); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1849 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1850 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1851 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1852 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1853 |
/*** Read file 2, if specified... ***/ |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1854 |
lastLineNumber = lineNumber; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1855 |
result2 = OWCFG_OK; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1856 |
if (readFile2) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1857 |
result2 = readOWconfig(readFile2, &readFile2TimeStamp); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1858 |
if (result2 != OWCFG_OK && result2 != OWCFG_OPEN1FAIL) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1859 |
initDatabase(); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1860 |
if (result2 == OWCFG_LOCK1FAIL) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1861 |
result2 = OWCFG_LOCK2FAIL; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1862 |
if (result2 == OWCFG_SYNTAX1) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1863 |
result2 = OWCFG_SYNTAX2; |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1864 |
return(result2); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1865 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1866 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1867 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1868 |
(void)strcpy(currentPackage, defaultNewPkgName); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1869 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1870 |
if (result1 == result2) { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1871 |
if (result1 == OWCFG_OK) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1872 |
return(OWCFG_OK); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1873 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1874 |
return(OWCFG_OPENBOTHFAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1875 |
} else { |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1876 |
if (result1 == OWCFG_OPEN1FAIL) |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1877 |
return(OWCFG_OPEN1FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1878 |
else |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1879 |
return(OWCFG_OPEN2FAIL); |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1880 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1881 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1882 |
} |
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1883 |
|
b194b3fada3c
6899419 Move libowconfig to open-src & /usr/X11
Alan Coopersmith <Alan.Coopersmith@Sun.COM>
parents:
diff
changeset
|
1884 |