mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 09:39:45 -05:00
New files from Autoconf branch.
This commit is contained in:
parent
dd51f86042
commit
926ba6cb4a
3 changed files with 159 additions and 0 deletions
102
libraries/liblutil/getopt.c
Normal file
102
libraries/liblutil/getopt.c
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
/*
|
||||
getopt.c
|
||||
|
||||
modified public-domain AT&T getopt(3)
|
||||
modified by Kurt Zeilenga for inclusion into OpenLDAP
|
||||
*/
|
||||
|
||||
#include "portable.h"
|
||||
|
||||
#ifndef HAVE_GETOPT
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <ac/string.h>
|
||||
#include <ac/unistd.h>
|
||||
|
||||
#ifdef HAVE_IO_H
|
||||
#include <io.h>
|
||||
#endif
|
||||
|
||||
#ifndef STDERR_FILENO
|
||||
#define STDERR_FILENO 2
|
||||
#endif
|
||||
|
||||
int opterr = 1;
|
||||
int optind = 1;
|
||||
int optopt;
|
||||
char * optarg;
|
||||
|
||||
static void ERR (char ** argv, char * s, char c)
|
||||
{
|
||||
char errbuf[2];
|
||||
|
||||
#ifdef DF_TRACE_DEBUG
|
||||
printf("DF_TRACE_DEBUG: static void ERR () in getopt.c\n");
|
||||
#endif
|
||||
if (opterr)
|
||||
{
|
||||
errbuf[0] = c;
|
||||
errbuf[1] = '\n';
|
||||
(void) write(STDERR_FILENO,argv[0],strlen(argv[0]));
|
||||
(void) write(STDERR_FILENO,s,strlen(s));
|
||||
(void) write(STDERR_FILENO,errbuf,sizeof errbuf);
|
||||
}
|
||||
}
|
||||
|
||||
int getopt (int argc, char ** argv, char * opts)
|
||||
{
|
||||
static int sp = 1, error = (int) '?';
|
||||
static char sw = '-', eos = '\0', arg = ':';
|
||||
register char c, * cp;
|
||||
|
||||
#ifdef DF_TRACE_DEBUG
|
||||
printf("DF_TRACE_DEBUG: int getopt () in getopt.c\n");
|
||||
#endif
|
||||
if (sp == 1)
|
||||
if (optind >= argc || argv[optind][0] != sw
|
||||
|| argv[optind][1] == eos)
|
||||
return EOF;
|
||||
else if (strcmp(argv[optind],"--") == 0)
|
||||
{
|
||||
optind++;
|
||||
return EOF;
|
||||
}
|
||||
c = argv[optind][sp];
|
||||
optopt = (int) c;
|
||||
if (c == arg || (cp = strchr(opts,c)) == NULL)
|
||||
{
|
||||
ERR(argv,": illegal option--",c);
|
||||
if (argv[optind][++sp] == eos)
|
||||
{
|
||||
optind++;
|
||||
sp = 1;
|
||||
}
|
||||
return error;
|
||||
}
|
||||
else if (*++cp == arg)
|
||||
{
|
||||
if (argv[optind][sp + 1] != eos)
|
||||
optarg = &argv[optind++][sp + 1];
|
||||
else if (++optind >= argc)
|
||||
{
|
||||
ERR(argv,": option requires an argument--",c);
|
||||
sp = 1;
|
||||
return error;
|
||||
}
|
||||
else
|
||||
optarg = argv[optind++];
|
||||
sp = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (argv[optind][++sp] == eos)
|
||||
{
|
||||
sp = 1;
|
||||
optind++;
|
||||
}
|
||||
optarg = NULL;
|
||||
}
|
||||
return (int) c;
|
||||
}
|
||||
#endif /* HAVE_GETOPT */
|
||||
19
libraries/liblutil/strdup.c
Normal file
19
libraries/liblutil/strdup.c
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
#include "portable.h"
|
||||
|
||||
#ifndef HAVE_STRDUP
|
||||
|
||||
#include <ac/string.h>
|
||||
|
||||
char *strdup( const char *s )
|
||||
{
|
||||
char *p;
|
||||
|
||||
if ( (p = (char *) malloc( strlen( s ) + 1 )) == NULL )
|
||||
return( NULL );
|
||||
|
||||
strcpy( p, s );
|
||||
|
||||
return( p );
|
||||
}
|
||||
|
||||
#endif /* !strdup */
|
||||
38
libraries/liblutil/tempnam.c
Normal file
38
libraries/liblutil/tempnam.c
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
#include "portable.h"
|
||||
|
||||
#ifndef HAVE_TEMPNAME
|
||||
|
||||
#include <ac/string.h>
|
||||
|
||||
char *tempnam( char *dir, char *pfx )
|
||||
{
|
||||
char *s;
|
||||
|
||||
if ( dir == NULL ) {
|
||||
dir = "/tmp";
|
||||
}
|
||||
|
||||
/*
|
||||
* allocate space for dir + '/' + pfx (up to 5 chars) + 6 trailing 'X's + 0 byte
|
||||
*/
|
||||
if (( s = (char *)malloc( strlen( dir ) + 14 )) == NULL ) {
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
strcpy( s, dir );
|
||||
strcat( s, "/" );
|
||||
if ( pfx != NULL ) {
|
||||
strcat( s, pfx );
|
||||
}
|
||||
strcat( s, "XXXXXX" );
|
||||
mktemp( s );
|
||||
|
||||
if ( *s == '\0' ) {
|
||||
free( s );
|
||||
s = NULL;
|
||||
}
|
||||
|
||||
return( s );
|
||||
}
|
||||
|
||||
#endif /* nextstep */
|
||||
Loading…
Reference in a new issue