deflt.c revision 7c478bd95313f5f23a4c958a745db2134aa03244
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/* Copyright (c) 1987, 1988 Microsoft Corporation */
/* All Rights Reserved */
#pragma ident "%Z%%M% %I% %E% SMI"
/* LINTLIBRARY */
#include <stdio.h>
#include <stdlib.h>
#include <deflt.h>
#include <string.h>
#include <ctype.h>
#include <limits.h>
#include "mtlib.h"
#include <thread.h>
#include <synch.h>
#include <libintl.h>
#include <unistd.h>
#pragma init(deflt_init)
static void strip_quotes(char *);
static thread_key_t thr_key;
struct thr_data {
int Dcflags; /* [re-]initialized on each call to defopen() */
};
/*
* destructor for per-thread data, registered with thr_keycreate()
*/
static void
free_thr_data(void *arg)
{
}
/*
* _init routine for this library. Set up per-thread-data-key
*/
static void
deflt_init(void)
{
}
/*
* get the per-thread-data-item for the calling thread
*/
static struct thr_data *
_get_thr_data(void)
{
}
}
return (thr_data);
}
/*
* defopen() - declare defopen filename
*
* defopen(fn)
* char *fn
*
* If 'fn' is non-null; it is a full pathname of a file
* which becomes the one read by subsequent defread() calls.
* If 'fn' is null the defopen file is closed.
*
* see defread() for more details.
*
* EXIT returns 0 if ok
* returns -1 if error
*/
int
{
return (-1);
return (0);
}
return (-1);
return (0);
}
/*
* defread() - read an entry from the defopen file
*
* defread(cp)
* char *cp
*
* The defopen data file must have been previously opened by
* defopen(). defread scans the data file looking for a line
* which begins with the string '*cp'. If such a line is found,
* defread returns a pointer to the first character following
* the matched string (*cp). If no line is found or no file
* is open, defread() returns NULL.
*
* Note that there is no way to simulatniously peruse multiple
* defopen files; since there is no way of indicating 'which one'
* to defread(). If you want to peruse a secondary file you must
* recall defopen(). If you need to go back to the first file,
* you must call defopen() again.
*/
char *
{
return (NULL);
return (NULL);
;
else
break; /* line too long */
/* found it */
/* strip quotes if requested */
}
break;
}
}
return (ret_ptr);
}
/*
* defcntl -- default control
*
* SYNOPSIS
* oldflags = defcntl(cmd, arg);
*
* ENTRY
* cmd Command. One of DC_GET, DC_SET.
* arg Depends on command. If DC_GET, ignored. If
* DC_GET, new flags value, created by ORing the DC_* bits.
* RETURN
* oldflags Old value of flags. -1 on error.
* NOTES
* Currently only one bit of flags implemented, namely respect/
* ignore case. The routine is as general as it is so that we
* leave our options open. E.g. we might want to specify rewind/
* norewind before each defread.
*/
int
{
int oldflags;
return (-1);
switch (cmd) {
case DC_GETFLAGS: /* query */
break;
case DC_SETFLAGS: /* set */
break;
default: /* error */
oldflags = -1;
break;
}
return (oldflags);
}
/*
* strip_quotes -- strip double (") or single (') quotes from a buffer
*
* ENTRY
* ptr initial string
*
* EXIT
* ptr string with quotes (if any) removed
*/
static void
strip_quotes(char *ptr)
{
while (*ptr != '\0') {
} else {
strip_ptr++;
}
}
ptr++;
}
*strip_ptr = '\0';
}
}