Merge branch 'linux1'
[oweals/cde.git] / cde / programs / dthelp / parser / pass2 / eltdef / entity.c
1 /*
2  * CDE - Common Desktop Environment
3  *
4  * Copyright (c) 1993-2012, The Open Group. All rights reserved.
5  *
6  * These libraries and programs are free software; you can
7  * redistribute them and/or modify them under the terms of the GNU
8  * Lesser General Public License as published by the Free Software
9  * Foundation; either version 2 of the License, or (at your option)
10  * any later version.
11  *
12  * These libraries and programs are distributed in the hope that
13  * they will be useful, but WITHOUT ANY WARRANTY; without even the
14  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15  * PURPOSE. See the GNU Lesser General Public License for more
16  * details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with these librararies and programs; if not, write
20  * to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
21  * Floor, Boston, MA 02110-1301 USA
22  */
23 /* $XConsortium: entity.c /main/3 1995/11/08 10:45:15 rswiston $ */
24 /* Copyright (c) 1986, 1987, 1988, 1989 Hewlett-Packard Co. */
25
26 /* Entity.c has ELTDEF procedures relevant to entities */
27
28 #include <stdio.h>
29 #include <string.h>
30 #include <malloc.h>
31 #include "basic.h"
32 #include "trie.h"
33 #include "dtdext.h"
34 #include "eltdef.h"
35 #include "entext.h"
36
37 /* Add an entity */
38 void addent(M_NOPAR)
39   {
40     M_ENTITY *new ;
41
42     new = (M_ENTITY *) m_malloc(sizeof(M_ENTITY), "entity") ;
43     if (entity = (M_ENTITY *) m_ntrtrie(name, m_enttrie, (M_TRIE *) new)) {
44       m_free(new, "entity") ;
45       if (! entity->wheredef) return ;
46       if (entity->wheredef == M_DBUILD) {
47         warning1("Redefining %s: entity defined in BUILD", entity->name) ;
48         entity->type = M_GENERAL ;
49         entity->wheredef = FALSE ;
50         entity->content = NULL ;
51         return ;
52         }
53       else
54         m_err1("Attempt to redefine %s", entity->name) ;
55       return ;
56       }
57     entity = new ;
58     if (lastent) lastent->next = entity ;
59     else firstent = entity ;
60     lastent = entity ;
61     entity->type = M_GENERAL ;
62     entity->wheredef = FALSE ;
63     entity->content = NULL ;
64     entity->name =
65       (M_WCHAR *) m_malloc(w_strlen(name) + 1, "entity name") ;
66     entity->index = ++m_entcnt ;
67     entity->codeindex = M_NULLVAL ;
68     entity->next = NULL ;
69     w_strcpy(entity->name, name) ;
70     return ;
71     }
72
73 #include "entout.c"