blob: 662741f1b9b334ee3d67272c03413b4e065d24d6 [file] [log] [blame]
duke6e45e102007-12-01 00:00:00 +00001/*
ohair2283b9d2010-05-25 15:58:33 -07002 * Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
duke6e45e102007-12-01 00:00:00 +00003 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
ohair2283b9d2010-05-25 15:58:33 -07007 * published by the Free Software Foundation. Oracle designates this
duke6e45e102007-12-01 00:00:00 +00008 * particular file as subject to the "Classpath" exception as provided
ohair2283b9d2010-05-25 15:58:33 -07009 * by Oracle in the LICENSE file that accompanied this code.
duke6e45e102007-12-01 00:00:00 +000010 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
ohair2283b9d2010-05-25 15:58:33 -070021 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
duke6e45e102007-12-01 00:00:00 +000024 */
25
26#include <ctype.h>
27
28#include "bool.h"
29#include "utf.h"
30
31 $$Tables
32
33/* Take pointer to a string. Skip over the longest part of the string that
34 * could be taken as a fieldname. Allow '/' if slash_okay is TRUE.
35 *
36 * Return a pointer to just past the fieldname. Return NULL if no fieldname
37 * at all was found, or in the case of slash_okay being true, we saw
38 * consecutive slashes (meaning we were looking for a qualified path but
39 * found something that was badly-formed).
40 */
41
42#define bool_t int
43
44char *
45skip_over_fieldname(char *name, bool_t slash_okay)
46{
47 char *p = name;
48 char *last_p;
49 unicode ch;
50 unicode last_ch = 0;
51
52 ch = *p;
53 if (ch == (ch & 0x7F))
54 ++p;
55 else
56 ch = next_utf2unicode(&p);
57 if (($$Lookup(ch) & $$bitJavaStart) == 0)
58 return 0;
59 for (;;) {
60 last_p = p;
61 last_ch = ch;
62 ch = *p;
63 if (ch == (ch & 0x7F))
64 ++p;
65 else
66 ch = next_utf2unicode(&p);
67 if (($$Lookup(ch) & $$bitJavaPart) == 0) {
68 if (ch == '/' && slash_okay) {
69 if (last_ch == '/')
70 return 0;
71 }
72 else {
73 return last_p;
74 }
75 }
76 }
77}
78
79void main() {
80 int j;
81 for (j = 0; j < (1 << 16); j++) {
82 int q = $$Lookup(j);
83 printf("%04x%s%s\n", j,
84 (q & $$bitJavaStart ? " Start" : ""),
85 (q & $$bitJavaPart ? " Part" : ""));
86 }
87}