Annotation of mandoc/literals.c, Revision 1.7
1.7 ! kristaps 1: /* $Id: literals.c,v 1.6 2008/12/09 19:57:26 kristaps Exp $ */
1.1 kristaps 2: /*
3: * Copyright (c) 2008 Kristaps Dzonsons <kristaps@kth.se>
4: *
5: * Permission to use, copy, modify, and distribute this software for any
6: * purpose with or without fee is hereby granted, provided that the
7: * above copyright notice and this permission notice appear in all
8: * copies.
9: *
10: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11: * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12: * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13: * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14: * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15: * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16: * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17: * PERFORMANCE OF THIS SOFTWARE.
18: */
19: #include <assert.h>
20: #include <string.h>
21: #include <stdlib.h>
22:
23: #include "private.h"
24:
1.5 kristaps 25: #define ROFF_ATTname_V1 "v1"
1.6 kristaps 26: #define ROFF_ATTname_V2 "v2"
1.5 kristaps 27: #define ROFF_ATTname_V3 "v3"
28: #define ROFF_ATTname_V6 "v6"
29: #define ROFF_ATTname_V7 "v7"
30: #define ROFF_ATTname_32V "32v"
31: #define ROFF_ATTname_V_1 "V.1"
32: #define ROFF_ATTname_V_4 "V.4"
33:
34: #define ROFFSecname_NAME "NAME"
35: #define ROFFSecname_SYNOP "SYNOPSIS"
36: #define ROFFSecname_DESC "DESCRIPTION"
37: #define ROFFSecname_ENV "ENVIRONMENT"
38: #define ROFFSecname_FILES "FILES"
39: #define ROFFSecname_EX "EXAMPLES"
40: #define ROFFSecname_DIAG "DIAGNOSTICS"
41: #define ROFFSecname_ERRS "ERRORS"
42: #define ROFFSecname_STAND "STANDARDS"
43: #define ROFFSecname_HIST "HISTORY"
44: #define ROFFSecname_AUTH "AUTHORS"
45: #define ROFFSecname_CAVEATS "CAVEATS"
46: #define ROFFSecname_BUGS "BUGS"
47: #define ROFFSecname_RETVAL "RETURN VALUES"
48: #define ROFFSecname_RETVAL1 "RETURN"
49: #define ROFFSecname_RETVAL2 "VALUES"
50: #define ROFFSecname_SEEALSO "SEE ALSO"
51: #define ROFFSecname_SEEALSO1 "SEE"
52: #define ROFFSecname_SEEALSO2 "ALSO"
53:
54: #define ROFF_MSECname_1 "1"
55: #define ROFF_MSECname_2 "2"
56: #define ROFF_MSECname_3 "3"
57: #define ROFF_MSECname_3p "3p"
58: #define ROFF_MSECname_4 "4"
59: #define ROFF_MSECname_5 "5"
60: #define ROFF_MSECname_6 "6"
61: #define ROFF_MSECname_7 "7"
62: #define ROFF_MSECname_8 "8"
63: #define ROFF_MSECname_9 "9"
64: #define ROFF_MSECname_UNASS "unass"
65: #define ROFF_MSECname_DRAFT "draft"
66: #define ROFF_MSECname_PAPER "paper"
67:
1.7 ! kristaps 68: #define ROFF_VOLname_AMD "AMD"
! 69: #define ROFF_VOLname_IND "IND"
! 70: #define ROFF_VOLname_KM "KM"
! 71: #define ROFF_VOLname_LOCAL "LOCAL"
! 72: #define ROFF_VOLname_PRM "PRM"
! 73: #define ROFF_VOLname_PS1 "PS1"
! 74: #define ROFF_VOLname_SMM "SMM"
! 75: #define ROFF_VOLname_URM "URM"
! 76: #define ROFF_VOLname_USD "USD"
! 77: #define ROFF_ARCHname_ALPHA "alpha"
! 78: #define ROFF_ARCHname_AMD64 "amd64"
! 79: #define ROFF_ARCHname_AMIGA "amiga"
! 80: #define ROFF_ARCHname_ARC "arc"
! 81: #define ROFF_ARCHname_ARMISH "armish"
! 82: #define ROFF_ARCHname_AVIION "aviion"
! 83: #define ROFF_ARCHname_HP300 "hp300"
! 84: #define ROFF_ARCHname_HPPA "hppa"
! 85: #define ROFF_ARCHname_HPPA64 "hppa64"
! 86: #define ROFF_ARCHname_I386 "i386"
! 87: #define ROFF_ARCHname_LANDISK "landisk"
! 88: #define ROFF_ARCHname_LUNA88K "luna88k"
! 89: #define ROFF_ARCHname_MAC68K "mac68k"
! 90: #define ROFF_ARCHname_MACPPC "macppc"
! 91: #define ROFF_ARCHname_MVME68K "mvme68k"
! 92: #define ROFF_ARCHname_MVME88K "mvme88k"
! 93: #define ROFF_ARCHname_MVMEPPC "mvmeppc"
! 94: #define ROFF_ARCHname_PMAX "pmax"
! 95: #define ROFF_ARCHname_SGI "sgi"
! 96: #define ROFF_ARCHname_SPARC "sparc"
! 97: #define ROFF_ARCHname_SPARC64 "sparc64"
! 98: #define ROFF_ARCHname_SUN3 "sun3"
! 99: #define ROFF_ARCHname_VAX "vax"
! 100: #define ROFF_ARCHname_ZAURUS "zaurus"
! 101:
1.5 kristaps 102: int
103: roff_sec(const char **p)
104: {
105:
106: assert(*p);
107: if (NULL != *(p + 1)) {
108: if (NULL != *(p + 2))
109: return(ROFFSec_OTHER);
110: if (0 == strcmp(*p, ROFFSecname_RETVAL1) &&
111: 0 == strcmp(*(p + 1), ROFFSecname_RETVAL2))
112: return(ROFFSec_RETVAL);
113: if (0 == strcmp(*p, ROFFSecname_SEEALSO1) &&
114: 0 == strcmp(*(p + 1), ROFFSecname_SEEALSO2))
115: return(ROFFSec_SEEALSO);
116: return(ROFFSec_OTHER);
117: }
118:
119: if (0 == strcmp(*p, ROFFSecname_NAME))
120: return(ROFFSec_NAME);
121: else if (0 == strcmp(*p, ROFFSecname_SYNOP))
122: return(ROFFSec_SYNOP);
123: else if (0 == strcmp(*p, ROFFSecname_DESC))
124: return(ROFFSec_DESC);
125: else if (0 == strcmp(*p, ROFFSecname_ENV))
126: return(ROFFSec_ENV);
127: else if (0 == strcmp(*p, ROFFSecname_FILES))
128: return(ROFFSec_FILES);
129: else if (0 == strcmp(*p, ROFFSecname_EX))
130: return(ROFFSec_EX);
131: else if (0 == strcmp(*p, ROFFSecname_DIAG))
132: return(ROFFSec_DIAG);
133: else if (0 == strcmp(*p, ROFFSecname_ERRS))
134: return(ROFFSec_ERRS);
135: else if (0 == strcmp(*p, ROFFSecname_STAND))
136: return(ROFFSec_STAND);
137: else if (0 == strcmp(*p, ROFFSecname_HIST))
138: return(ROFFSec_HIST);
139: else if (0 == strcmp(*p, ROFFSecname_AUTH))
140: return(ROFFSec_AUTH);
141: else if (0 == strcmp(*p, ROFFSecname_CAVEATS))
142: return(ROFFSec_CAVEATS);
143: else if (0 == strcmp(*p, ROFFSecname_BUGS))
144: return(ROFFSec_BUGS);
145: else if (0 == strcmp(*p, ROFFSecname_RETVAL))
146: return(ROFFSec_RETVAL);
147: else if (0 == strcmp(*p, ROFFSecname_SEEALSO))
148: return(ROFFSec_SEEALSO);
149:
150: return(ROFFSec_OTHER);
151: }
152:
153:
154: enum roffmsec
155: roff_msec(const char *p)
156: {
157:
158: assert(p);
159: if (0 == strcmp(p, ROFF_MSECname_1))
160: return(ROFF_MSEC_1);
161: else if (0 == strcmp(p, ROFF_MSECname_2))
162: return(ROFF_MSEC_2);
163: else if (0 == strcmp(p, ROFF_MSECname_3))
164: return(ROFF_MSEC_3);
165: else if (0 == strcmp(p, ROFF_MSECname_3p))
166: return(ROFF_MSEC_3p);
167: else if (0 == strcmp(p, ROFF_MSECname_4))
168: return(ROFF_MSEC_4);
169: else if (0 == strcmp(p, ROFF_MSECname_5))
170: return(ROFF_MSEC_5);
171: else if (0 == strcmp(p, ROFF_MSECname_6))
172: return(ROFF_MSEC_6);
173: else if (0 == strcmp(p, ROFF_MSECname_7))
174: return(ROFF_MSEC_7);
175: else if (0 == strcmp(p, ROFF_MSECname_8))
176: return(ROFF_MSEC_8);
177: else if (0 == strcmp(p, ROFF_MSECname_9))
178: return(ROFF_MSEC_9);
179: else if (0 == strcmp(p, ROFF_MSECname_UNASS))
180: return(ROFF_MSEC_UNASS);
181: else if (0 == strcmp(p, ROFF_MSECname_DRAFT))
182: return(ROFF_MSEC_DRAFT);
183: else if (0 == strcmp(p, ROFF_MSECname_PAPER))
184: return(ROFF_MSEC_PAPER);
185:
186: return(ROFF_MSEC_MAX);
187: }
1.4 kristaps 188:
1.1 kristaps 189:
190: char *
1.5 kristaps 191: roff_msecname(enum roffmsec sec)
1.2 kristaps 192: {
193:
194: switch (sec) {
195: case(ROFF_MSEC_1):
1.5 kristaps 196: return(ROFF_MSECname_1);
1.2 kristaps 197: case(ROFF_MSEC_2):
1.5 kristaps 198: return(ROFF_MSECname_2);
1.2 kristaps 199: case(ROFF_MSEC_3):
1.5 kristaps 200: return(ROFF_MSECname_3);
1.2 kristaps 201: case(ROFF_MSEC_3p):
1.5 kristaps 202: return(ROFF_MSECname_3p);
1.2 kristaps 203: case(ROFF_MSEC_4):
1.5 kristaps 204: return(ROFF_MSECname_4);
1.2 kristaps 205: case(ROFF_MSEC_5):
1.5 kristaps 206: return(ROFF_MSECname_5);
1.2 kristaps 207: case(ROFF_MSEC_6):
1.5 kristaps 208: return(ROFF_MSECname_6);
1.2 kristaps 209: case(ROFF_MSEC_7):
1.5 kristaps 210: return(ROFF_MSECname_7);
1.2 kristaps 211: case(ROFF_MSEC_8):
1.5 kristaps 212: return(ROFF_MSECname_8);
1.2 kristaps 213: case(ROFF_MSEC_9):
1.5 kristaps 214: return(ROFF_MSECname_9);
1.2 kristaps 215: case(ROFF_MSEC_UNASS):
1.5 kristaps 216: return(ROFF_MSECname_UNASS);
1.2 kristaps 217: case(ROFF_MSEC_DRAFT):
1.5 kristaps 218: return(ROFF_MSECname_DRAFT);
1.2 kristaps 219: case(ROFF_MSEC_PAPER):
1.5 kristaps 220: return(ROFF_MSECname_PAPER);
1.2 kristaps 221: default:
222: break;
223: }
224:
225: abort();
226: /* NOTREACHED */
227: }
228:
229:
230: char *
1.5 kristaps 231: roff_fmtstring(int tok)
1.1 kristaps 232: {
233:
234: switch (tok) {
235: case (ROFF_Ex):
236: return ("The %s utility exits 0 on success, and "
1.5 kristaps 237: ">0 if an error occurs.");
1.1 kristaps 238: case (ROFF_Rv):
239: return ("The %s() function returns the value 0 if "
240: "successful; otherwise the value -1 "
241: "is returned and the global variable "
1.5 kristaps 242: "errno is set to indicate the error.");
1.1 kristaps 243: case (ROFF_In):
1.5 kristaps 244: return("#include \\*(Lt%s\\*(Gt");
245: default:
246: break;
247: }
248:
249: abort();
250: /* NOTREACHED */
251: }
252:
253:
254: char *
255: roff_literal(int tok, const int *argc,
256: const char **argv, const char **morep)
257: {
258:
259: switch (tok) {
1.1 kristaps 260: case (ROFF_At):
261: assert(NULL == *argv);
262: assert(ROFF_ARGMAX == *argc);
263: if (NULL == *morep)
1.5 kristaps 264: return("AT&T UNIX");
265:
266: switch (roff_att(*morep)) {
267: case (ROFF_ATT_V1):
268: return("Version 1 AT&T UNIX");
269: case (ROFF_ATT_V2):
270: return("Version 2 AT&T UNIX");
271: case (ROFF_ATT_V3):
272: return("Version 3 AT&T UNIX");
273: case (ROFF_ATT_V6):
274: return("Version 6 AT&T UNIX");
275: case (ROFF_ATT_V7):
276: return("Version 7 AT&T UNIX");
277: case (ROFF_ATT_32V):
278: return("Version 32v AT&T UNIX");
279: case (ROFF_ATT_V_1):
280: return("AT&T System V.1 UNIX");
281: case (ROFF_ATT_V_4):
282: return("AT&T System V.4 UNIX");
283: default:
284: break;
285: }
286:
1.1 kristaps 287: abort();
288: /* NOTREACHED */
1.5 kristaps 289:
1.1 kristaps 290: case (ROFF_St):
291: assert(ROFF_ARGMAX != *argc);
292: assert(NULL == *argv);
293: switch (*argc) {
294: case(ROFF_p1003_1_88):
295: return("IEEE Std 1003.1-1988 "
1.5 kristaps 296: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 297: case(ROFF_p1003_1_90):
298: return("IEEE Std 1003.1-1990 "
1.5 kristaps 299: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 300: case(ROFF_p1003_1_96):
301: return("ISO/IEC 9945-1:1996 "
1.5 kristaps 302: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 303: case(ROFF_p1003_1_2001):
304: return("IEEE Std 1003.1-2001 "
1.5 kristaps 305: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 306: case(ROFF_p1003_1_2004):
307: return("IEEE Std 1003.1-2004 "
1.5 kristaps 308: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 309: case(ROFF_p1003_1):
310: return("IEEE Std 1003.1 "
1.5 kristaps 311: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 312: case(ROFF_p1003_1b):
313: return("IEEE Std 1003.1b "
1.5 kristaps 314: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 315: case(ROFF_p1003_1b_93):
316: return("IEEE Std 1003.1b-1993 "
1.5 kristaps 317: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 318: case(ROFF_p1003_1c_95):
319: return("IEEE Std 1003.1c-1995 "
1.5 kristaps 320: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 321: case(ROFF_p1003_1g_2000):
322: return("IEEE Std 1003.1g-2000 "
1.5 kristaps 323: "(\\*(LqPOSIX\\*(Rq)");
1.1 kristaps 324: case(ROFF_p1003_2_92):
325: return("IEEE Std 1003.2-1992 "
1.5 kristaps 326: "(\\*(LqPOSIX.2\\*(Rq)");
1.1 kristaps 327: case(ROFF_p1387_2_95):
328: return("IEEE Std 1387.2-1995 "
1.5 kristaps 329: "(\\*(LqPOSIX.7.2\\*(Rq)");
1.1 kristaps 330: case(ROFF_p1003_2):
331: return("IEEE Std 1003.2 "
1.5 kristaps 332: "(\\*(LqPOSIX.2\\*(Rq)");
1.1 kristaps 333: case(ROFF_p1387_2):
334: return("IEEE Std 1387.2 "
1.5 kristaps 335: "(\\*(LqPOSIX.7.2\\*(Rq)");
1.1 kristaps 336: case(ROFF_isoC_90):
337: return("ISO/IEC 9899:1990 "
1.5 kristaps 338: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 339: case(ROFF_isoC_amd1):
340: return("ISO/IEC 9899/AMD1:1995 "
1.5 kristaps 341: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 342: case(ROFF_isoC_tcor1):
343: return("ISO/IEC 9899/TCOR1:1994 "
1.5 kristaps 344: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 345: case(ROFF_isoC_tcor2):
346: return("ISO/IEC 9899/TCOR2:1995 "
1.5 kristaps 347: "(\\*(LqISO C90\\*(Rq)");
1.1 kristaps 348: case(ROFF_isoC_99):
349: return("ISO/IEC 9899:1999 "
1.5 kristaps 350: "(\\*(LqISO C99\\*(Rq)");
1.1 kristaps 351: case(ROFF_ansiC):
352: return("ANSI X3.159-1989 "
1.5 kristaps 353: "(\\*(LqANSI C\\*(Rq)");
1.1 kristaps 354: case(ROFF_ansiC_89):
355: return("ANSI X3.159-1989 "
1.5 kristaps 356: "(\\*(LqANSI C\\*(Rq)");
1.1 kristaps 357: case(ROFF_ansiC_99):
358: return("ANSI/ISO/IEC 9899-1999 "
1.5 kristaps 359: "(\\*(LqANSI C99\\*(Rq)");
1.1 kristaps 360: case(ROFF_ieee754):
361: return("IEEE Std 754-1985");
362: case(ROFF_iso8802_3):
363: return("ISO 8802-3: 1989");
364: case(ROFF_xpg3):
365: return("X/Open Portability Guide Issue 3 "
1.5 kristaps 366: "(\\*(LqXPG3\\*(Rq)");
1.1 kristaps 367: case(ROFF_xpg4):
368: return("X/Open Portability Guide Issue 4 "
1.5 kristaps 369: "(\\*(LqXPG4\\*(Rq)");
1.1 kristaps 370: case(ROFF_xpg4_2):
371: return("X/Open Portability Guide Issue 4.2 "
1.5 kristaps 372: "(\\*(LqXPG4.2\\*(Rq)");
1.1 kristaps 373: case(ROFF_xpg4_3):
374: return("X/Open Portability Guide Issue 4.3 "
1.5 kristaps 375: "(\\*(LqXPG4.3\\*(Rq)");
1.1 kristaps 376: case(ROFF_xbd5):
377: return("X/Open System Interface Definitions "
1.5 kristaps 378: "Issue 5 (\\*(LqXBD5\\*(Rq)");
1.1 kristaps 379: case(ROFF_xcu5):
380: return("X/Open Commands and Utilities Issue 5 "
1.5 kristaps 381: "(\\*(LqXCU5\\*(Rq)");
1.1 kristaps 382: case(ROFF_xsh5):
383: return("X/Open System Interfaces and Headers "
1.5 kristaps 384: "Issue 5 (\\*(LqXSH5\\*(Rq)");
1.1 kristaps 385: case(ROFF_xns5):
386: return("X/Open Networking Services Issue 5 "
1.5 kristaps 387: "(\\*(LqXNS5\\*(Rq)");
1.1 kristaps 388: case(ROFF_xns5_2d2_0):
389: return("X/Open Networking Services "
390: "Issue 5.2 Draft 2.0 "
1.5 kristaps 391: "(\\*(LqXNS5.2D2.0\\*(Rq)");
1.1 kristaps 392: case(ROFF_xcurses4_2):
393: return("X/Open Curses Issue 4 Version 2 "
1.5 kristaps 394: "(\\*(LqXCURSES4.2\\*(Rq)");
1.1 kristaps 395: case(ROFF_susv2):
396: return("Version 2 of the Single "
397: "UNIX Specification");
398: case(ROFF_susv3):
399: return("Version 3 of the Single "
400: "UNIX Specification");
401: case(ROFF_svid4):
402: return("System V Interface Definition, Fourth "
1.5 kristaps 403: "Edition (\\*(LqSVID4\\*(Rq)");
1.1 kristaps 404: default:
405: break;
406: }
407: abort();
408: /* NOTREACHED */
1.5 kristaps 409:
1.1 kristaps 410: case (ROFF_Bt):
411: return("is currently in beta test.");
412: case (ROFF_Ud):
413: return("currently under development.");
414: case (ROFF_Fx):
415: return("FreeBSD");
416: case (ROFF_Nx):
417: return("NetBSD");
418: case (ROFF_Ox):
419: return("OpenBSD");
420: case (ROFF_Ux):
421: return("UNIX");
422: case (ROFF_Bx):
423: return("BSD");
424: case (ROFF_Bsx):
425: return("BSDI BSD/OS");
426: default:
427: break;
428: }
1.5 kristaps 429:
1.1 kristaps 430: abort();
431: /* NOTREACHED */
432: }
433:
1.5 kristaps 434:
435: enum roffatt
436: roff_att(const char *p)
437: {
438:
439: assert(p);
440: if (0 == strcmp(p, ROFF_ATTname_V1))
441: return(ROFF_ATT_V1);
442: else if (0 == strcmp(p, ROFF_ATTname_V2))
443: return(ROFF_ATT_V2);
444: else if (0 == strcmp(p, ROFF_ATTname_V3))
445: return(ROFF_ATT_V3);
446: else if (0 == strcmp(p, ROFF_ATTname_V6))
447: return(ROFF_ATT_V6);
448: else if (0 == strcmp(p, ROFF_ATTname_V7))
449: return(ROFF_ATT_V7);
450: else if (0 == strcmp(p, ROFF_ATTname_32V))
451: return(ROFF_ATT_32V);
452: else if (0 == strcmp(p, ROFF_ATTname_V_1))
453: return(ROFF_ATT_V_1);
454: else if (0 == strcmp(p, ROFF_ATTname_V_4))
455: return(ROFF_ATT_V_4);
456:
457: return(ROFF_ATT_MAX);
458: }
459:
1.7 ! kristaps 460:
! 461: enum roffvol
! 462: roff_vol(const char *p)
! 463: {
! 464:
! 465: if (0 == strcmp(p, ROFF_VOLname_AMD))
! 466: return(ROFF_VOL_AMD);
! 467: else if (0 == strcmp(p, ROFF_VOLname_IND))
! 468: return(ROFF_VOL_IND);
! 469: else if (0 == strcmp(p, ROFF_VOLname_KM))
! 470: return(ROFF_VOL_KM);
! 471: else if (0 == strcmp(p, ROFF_VOLname_LOCAL))
! 472: return(ROFF_VOL_LOCAL);
! 473: else if (0 == strcmp(p, ROFF_VOLname_PRM))
! 474: return(ROFF_VOL_PRM);
! 475: else if (0 == strcmp(p, ROFF_VOLname_PS1))
! 476: return(ROFF_VOL_PS1);
! 477: else if (0 == strcmp(p, ROFF_VOLname_SMM))
! 478: return(ROFF_VOL_SMM);
! 479: else if (0 == strcmp(p, ROFF_VOLname_URM))
! 480: return(ROFF_VOL_URM);
! 481: else if (0 == strcmp(p, ROFF_VOLname_USD))
! 482: return(ROFF_VOL_USD);
! 483: else if (0 == strcmp(p, ROFF_ARCHname_ALPHA))
! 484: return(ROFF_ARCH_ALPHA);
! 485: else if (0 == strcmp(p, ROFF_ARCHname_AMD64))
! 486: return(ROFF_ARCH_AMD64);
! 487: else if (0 == strcmp(p, ROFF_ARCHname_AMIGA))
! 488: return(ROFF_ARCH_AMIGA);
! 489: else if (0 == strcmp(p, ROFF_ARCHname_ARC))
! 490: return(ROFF_ARCH_ARC);
! 491: else if (0 == strcmp(p, ROFF_ARCHname_ARMISH))
! 492: return(ROFF_ARCH_ARMISH);
! 493: else if (0 == strcmp(p, ROFF_ARCHname_AVIION))
! 494: return(ROFF_ARCH_AVIION);
! 495: else if (0 == strcmp(p, ROFF_ARCHname_HP300))
! 496: return(ROFF_ARCH_HP300);
! 497: else if (0 == strcmp(p, ROFF_ARCHname_HPPA))
! 498: return(ROFF_ARCH_HPPA);
! 499: else if (0 == strcmp(p, ROFF_ARCHname_HPPA64))
! 500: return(ROFF_ARCH_HPPA64);
! 501: else if (0 == strcmp(p, ROFF_ARCHname_I386))
! 502: return(ROFF_ARCH_I386);
! 503: else if (0 == strcmp(p, ROFF_ARCHname_LANDISK))
! 504: return(ROFF_ARCH_LANDISK);
! 505: else if (0 == strcmp(p, ROFF_ARCHname_LUNA88K))
! 506: return(ROFF_ARCH_LUNA88K);
! 507: else if (0 == strcmp(p, ROFF_ARCHname_MAC68K))
! 508: return(ROFF_ARCH_MAC68K);
! 509: else if (0 == strcmp(p, ROFF_ARCHname_MACPPC))
! 510: return(ROFF_ARCH_MACPPC);
! 511: else if (0 == strcmp(p, ROFF_ARCHname_MVME68K))
! 512: return(ROFF_ARCH_MVME68K);
! 513: else if (0 == strcmp(p, ROFF_ARCHname_MVME88K))
! 514: return(ROFF_ARCH_MVME88K);
! 515: else if (0 == strcmp(p, ROFF_ARCHname_MVMEPPC))
! 516: return(ROFF_ARCH_MVMEPPC);
! 517: else if (0 == strcmp(p, ROFF_ARCHname_PMAX))
! 518: return(ROFF_ARCH_PMAX);
! 519: else if (0 == strcmp(p, ROFF_ARCHname_SGI))
! 520: return(ROFF_ARCH_SGI);
! 521: else if (0 == strcmp(p, ROFF_ARCHname_SPARC))
! 522: return(ROFF_ARCH_SPARC);
! 523: else if (0 == strcmp(p, ROFF_ARCHname_SPARC64))
! 524: return(ROFF_ARCH_SPARC64);
! 525: else if (0 == strcmp(p, ROFF_ARCHname_SUN3))
! 526: return(ROFF_ARCH_SUN3);
! 527: else if (0 == strcmp(p, ROFF_ARCHname_VAX))
! 528: return(ROFF_ARCH_VAX);
! 529: else if (0 == strcmp(p, ROFF_ARCHname_ZAURUS))
! 530: return(ROFF_ARCH_ZAURUS);
! 531:
! 532: return(ROFF_VOL_MAX);
! 533: }
CVSweb