util.c revision 6e54a631bc06b2a4f5919eb8d582d52780e17983
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER START
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * The contents of this file are subject to the terms of the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Common Development and Distribution License (the "License").
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You may not use this file except in compliance with the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * See the License for the specific language governing permissions
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * and limitations under the License.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * When distributing Covered Code, include this CDDL HEADER in each
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * If applicable, add the following below this CDDL HEADER, with the
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * fields enclosed by brackets "[]" replaced with your own identifying
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * information: Portions Copyright [yyyy] [name of copyright owner]
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * CDDL HEADER END
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
e77b06d21580f630e0a7c437495ab283d3672828tomee * Use is subject to license terms.
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#pragma ident "%Z%%M% %I% %E% SMI"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee#define SkipSpace(s) while (*(s) == ' ' || *(s) == '\t') s++
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Top pointer of the setid list. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* comment for messages. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic char *msg_comment;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* comment for set numbers. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic char *set_comment;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* List of set number's maximum message numbers. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Quote character to surround messages. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee/* Internal functions. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic void add_msgid(SetID, int, char *, char *, int, int);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic void add_setid(int, int, char *, char *, int, int);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic MsgID lookup_msgid(SetID, int, char *, char *, int);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic int is_bs_terminated(char *);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic char *ustrdup(char *);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic void makeup_msg(char **);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeadd_msg(int setid, int msgid, char *msg, char *file, int line, int no_write)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return; /* we already have the one. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee prg_err(gettext("cannot create \"%s\": permission denied"),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* AppendMode is already turned off if the file doesn't exist. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee char msg[NL_TEXTMAX+32]; /* 32 is some other stuff. */
127bbe13a6d36580af6a8ded154f1201a6250772tomee "$ File:%s, line:%d\n",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "$ File:%s, line:%d\n",
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeelookup_msgid(SetID si, int msgid, char *msg, char *file, int line)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* same setid & msgid, but different msg. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee "multiple messages: set number %d, message number %d\n"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee " current : \"%s\"\n"
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee " previous: \"%s\" : \"%s\", line %d"),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeadd_msgid(SetID si, int msgid, char *msg, char *file, int line, int no_write)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (msgid == 0) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee src_err(file, line, gettext("improper message number: %d"),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee src_err(file, line, gettext("too large message number: %d"),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee src_err(file, line, gettext("too long message text"));
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeadd_setid(int setid, int msgid, char *msg, char *file, int line, int no_write)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeeprint_prefix(FILE *fp, char *prefix, int rm_blank, char *str)
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee while (*str) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (0);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (0);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (n == 2) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (1);
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe register int i;
ae94d716ff8759d2dc2de680b5b85a291219a4c1Richard Lowe prg_err(gettext("cannot create \"%s\": permission denied"),
127bbe13a6d36580af6a8ded154f1201a6250772tomee if (msgid_table[i] > 0) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee gettext("run out of message number in set number: %d"),
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee char c = 0;
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /*CONSTCOND*/
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee while (1) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if ((*ptr == '$' && (*(ptr+1) == ' ' || *(ptr+1) == '\t')) ||
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (strncmp(ptr, SET_TOKEN, sizeof (SET_TOKEN) - 1) == 0) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (c && (*ptr == c)) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (c && ((*ptr == c) &&
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee while (--len >= 0) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (msg[len] == ' ' || msg[len] == '\t' || msg[len] == '\n') {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (0);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (1);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (0);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee return (0);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomeestatic char *
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee if (IsActiveMode(TripleMode) && strchr(msg, '%') == NULL) {
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* there is no '%' in message. */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* LINTED: E_SEC_PRINTF_VAR_FMT */
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee (void) fprintf(stderr, gettext("\"%s\", line %d: "), file, line);
fb3fb4f3d76d55b64440afd0af72775dfad3bd1dtomee /* LINTED: E_SEC_PRINTF_VAR_FMT */