mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-27 00:29:55 +00:00
initial checkin
This commit is contained in:
parent
68bf96eb2a
commit
1c00c49e7b
37
lib/libc/makebuild
Normal file
37
lib/libc/makebuild
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#! /bin/gsh
|
||||||
|
|
||||||
|
rm -f libc
|
||||||
|
makelib.apw -w -r -p -l libc gen/*.o
|
||||||
|
makelib.apw -w -r -p -l libc gno/*.o
|
||||||
|
makelib.apw -w -r -p -l libc locale/*.o
|
||||||
|
makelib.apw -w -r -p -l libc stdio/*.o
|
||||||
|
makelib.apw -w -r -p -l libc stdlib/*.o
|
||||||
|
makelib.apw -w -r -p -l libc string/*.o
|
||||||
|
makelib.apw -w -r -p -l libc sys/*.o /src/lib/orcalibs/Source/ORCALib/obj/assert.a
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
set CWD=/src/gno/lib/libc
|
||||||
|
echo CWD is $CWD
|
||||||
|
|
||||||
|
set DMAKE=dmake
|
||||||
|
|
||||||
|
set d=gen
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=gno
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=locale
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=stdio
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=stdlib
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
# set d=stdtime
|
||||||
|
# echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=string
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
set d=sys
|
||||||
|
echo "doing build in" $d; cd $d; $dmake build; cd $CWD
|
||||||
|
|
||||||
|
echo "doing build in $CWD"
|
||||||
|
$dmake build
|
28
lib/libcontrib/Makefile
Normal file
28
lib/libcontrib/Makefile
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
#
|
||||||
|
# This is the top-level makefile for libcontrib, GNO v2.0.6
|
||||||
|
#
|
||||||
|
# $Id: Makefile,v 1.1 1997/10/03 04:49:40 gdr Exp $
|
||||||
|
#
|
||||||
|
|
||||||
|
.INCLUDE: ../../paths.mk
|
||||||
|
.INCLUDE: ../const.mk
|
||||||
|
|
||||||
|
LIB = libcontrib
|
||||||
|
OBJS = strarray.o xalloc.o
|
||||||
|
HEADER = contrib.h
|
||||||
|
LIBDIR = $(RELEASE_DIR)/usr/lib
|
||||||
|
INCDIR = $(RELEASE_DIR)/usr/include/gno
|
||||||
|
|
||||||
|
CFLAGS += -I. -O78
|
||||||
|
|
||||||
|
$(LIB): $(OBJS) $(LIB).r
|
||||||
|
$(RM) -f $@
|
||||||
|
$(MAKELIB) $(MAKELIBFLAGS) -l $@ $(OBJS)
|
||||||
|
$(CATREZ) -d $(LIB) $(LIB).r
|
||||||
|
|
||||||
|
release: $(LIB) $(HEADER)
|
||||||
|
$(INSTALL) -d $(LIBDIR) $(INCDIR)
|
||||||
|
$(INSTALL) $(LIB) $(LIBDIR)
|
||||||
|
$(INSTALL) $(HEADER) $(INCDIR)
|
||||||
|
|
||||||
|
$(OBJS):: $(HEADER)
|
40
lib/libcontrib/contrib.h
Normal file
40
lib/libcontrib/contrib.h
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
/*
|
||||||
|
* $Id: contrib.h,v 1.1 1997/10/03 04:49:40 gdr Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _CONTRIB_H_
|
||||||
|
#define _CONTRIB_H_
|
||||||
|
|
||||||
|
#ifndef _SYS_TYPES_H_
|
||||||
|
#include <sys/types.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef _SYS_CDEFS_H_
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Memory allocation routines
|
||||||
|
*/
|
||||||
|
|
||||||
|
void * LC_xmalloc __P((size_t));
|
||||||
|
void * LC_xrealloc __P((void *, size_t));
|
||||||
|
char * LC_xstrdup __P((const char *));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* String Array Functions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct LC_StringArrayElem_t {
|
||||||
|
char ** lc_vec;
|
||||||
|
int lc_alloced;
|
||||||
|
int lc_used;
|
||||||
|
} LC_StringArrayElem_t, *LC_StringArray_t;
|
||||||
|
|
||||||
|
LC_StringArray_t LC_StringArrayNew __P((void));
|
||||||
|
void LC_StringArrayAdd __P((LC_StringArray_t, char *));
|
||||||
|
void LC_StringArrayDelete __P((LC_StringArray_t, char *));
|
||||||
|
void LC_StringArrayClear __P((LC_StringArray_t));
|
||||||
|
char * LC_StringArrayCat __P((LC_StringArray_t, int));
|
||||||
|
|
||||||
|
#endif /* _CONTRIB_H_ */
|
31
lib/libcontrib/libcontrib.rez
Normal file
31
lib/libcontrib/libcontrib.rez
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*
|
||||||
|
* Resources for version and comment
|
||||||
|
*
|
||||||
|
* $Id: libcontrib.rez,v 1.1 1997/10/03 04:49:40 gdr Exp $
|
||||||
|
*/
|
||||||
|
#define LIB "lcontrib"
|
||||||
|
#define DESC "A library of non-standard but still useful subroutines.\n"
|
||||||
|
#define GNO_VER "GNO v2.0.6"
|
||||||
|
|
||||||
|
#include "Types.rez"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Version
|
||||||
|
*/
|
||||||
|
resource rVersion (1, purgeable3) {
|
||||||
|
{ 1, 0, 0, /* Version 1.0.0 */
|
||||||
|
release, /* development|alpha|beta|final|release */
|
||||||
|
0 }, /* non-final release number */
|
||||||
|
verUS, /* Country */
|
||||||
|
LIB, /* Program name */
|
||||||
|
DESC GNO_VER
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Comment
|
||||||
|
*/
|
||||||
|
resource rComment (1, purgeable3) {
|
||||||
|
LIB " v1.0 (September 1997)\n"
|
||||||
|
DESC GNO_VER
|
||||||
|
};
|
188
lib/libcontrib/strarray.c
Normal file
188
lib/libcontrib/strarray.c
Normal file
@ -0,0 +1,188 @@
|
|||||||
|
/*
|
||||||
|
* String Array implementation. These routines dynamically handle an
|
||||||
|
* array of NULL-terminated strings. The array itself is also NULL-
|
||||||
|
* terminated.
|
||||||
|
*
|
||||||
|
* Devin Reade, September 1997.
|
||||||
|
*
|
||||||
|
* $Id: strarray.c,v 1.1 1997/10/03 04:49:40 gdr Exp $
|
||||||
|
*/
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <err.h>
|
||||||
|
#include <contrib.h>
|
||||||
|
|
||||||
|
#define SLOTS_QUANTUM 64
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LC_StringArrayNew
|
||||||
|
*
|
||||||
|
* Creates and returns a new, empty string array. The vector will be
|
||||||
|
* allocated, but will have NULL as the first element.
|
||||||
|
*/
|
||||||
|
|
||||||
|
LC_StringArray_t
|
||||||
|
LC_StringArrayNew (void) {
|
||||||
|
LC_StringArray_t result;
|
||||||
|
|
||||||
|
result = LC_xmalloc(sizeof(LC_StringArrayElem_t));
|
||||||
|
result->lc_vec = LC_xmalloc(SLOTS_QUANTUM * sizeof(char *));
|
||||||
|
(result->lc_vec)[0] = NULL;
|
||||||
|
result->lc_alloced = SLOTS_QUANTUM;
|
||||||
|
result->lc_used = 0;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LC_StringArrayAdd
|
||||||
|
*
|
||||||
|
* Adds a string <str> to the stringArray <array>. Calling this
|
||||||
|
* with <str>==NULL has no effect as the array is always NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
LC_StringArrayAdd (LC_StringArray_t array, char *str) {
|
||||||
|
if (array == NULL) {
|
||||||
|
errx(1, "LC_StringArrayAdd was passed a NULL first argument");
|
||||||
|
}
|
||||||
|
if (array->lc_used > array->lc_alloced) {
|
||||||
|
errx(1, "LC_StringArrayAdd: corrupted string array");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (str == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* grow the size of the string array, if necessary */
|
||||||
|
if (array->lc_alloced - array->lc_used < 2) {
|
||||||
|
array->lc_alloced+=SLOTS_QUANTUM;
|
||||||
|
if (array->lc_vec == NULL) {
|
||||||
|
array->lc_vec = LC_xmalloc(array->lc_alloced * sizeof(char *));
|
||||||
|
} else {
|
||||||
|
array->lc_vec = LC_xrealloc(array->lc_vec,
|
||||||
|
array->lc_alloced * sizeof(char *));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* add in the string */
|
||||||
|
array->lc_vec[array->lc_used] = LC_xstrdup(str);
|
||||||
|
array->lc_used++;
|
||||||
|
array->lc_vec[array->lc_used] = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/*
|
||||||
|
* This routine has been disabled for now because it is subject to
|
||||||
|
* buffer overflow.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LC_StringArrayAdd2
|
||||||
|
*
|
||||||
|
* This is like LC_StringArrayAdd, but instead of taking one string,
|
||||||
|
* it takes printf()-like arguments
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
LC_StringArrayAdd2 (LC_StringArray_t array, char *format, ...) {
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap,format);
|
||||||
|
vsprintf(buffer,format,ap);
|
||||||
|
LC_StringArrayAdd(array,buffer);
|
||||||
|
va_end(ap);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
LC_StringArrayDelete (LC_StringArray_t array, char *str) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i=0; i<array->lc_used; i++) {
|
||||||
|
if (strcmp(array->lc_vec[i],str)) continue;
|
||||||
|
|
||||||
|
/* found it; free up the memory */
|
||||||
|
free(array->lc_vec[i]);
|
||||||
|
for (; i<array->lc_used; i++) {
|
||||||
|
array->lc_vec[i]=array->lc_vec[i+1];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
array->lc_used -= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LC_StringArrayClear -- free the memory allocated by LC_StringArrayAdd()
|
||||||
|
* and reinitialize the associated variables.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
LC_StringArrayClear (LC_StringArray_t array) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (array->lc_used == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((array->lc_vec == 0) || (array->lc_alloced == 0)) {
|
||||||
|
errx(1, "LC_StringArrayClear: corrupted array");
|
||||||
|
}
|
||||||
|
for (i=0; i<array->lc_used; i++) {
|
||||||
|
free((array->lc_vec)[i]);
|
||||||
|
}
|
||||||
|
free(array->lc_vec);
|
||||||
|
array->lc_vec = NULL;
|
||||||
|
array->lc_alloced = 0;
|
||||||
|
array->lc_used = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LC_StringArrayCat
|
||||||
|
*
|
||||||
|
* Concatenate the elements of a LC_StringArray_t into a single character
|
||||||
|
* string. Return a pointer to the malloc'd string. The LC_StringArray_t
|
||||||
|
* is not modified.
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *
|
||||||
|
LC_StringArrayCat (LC_StringArray_t array, int insertSpace) {
|
||||||
|
int i, j;
|
||||||
|
size_t len, len2;
|
||||||
|
char *result, *p, *q, **qq;
|
||||||
|
|
||||||
|
len = 1;
|
||||||
|
j = (insertSpace) ? 1 : 0;
|
||||||
|
for (i=0; i<array->lc_used; i++) {
|
||||||
|
len += strlen((array->lc_vec)[i]) + j;
|
||||||
|
}
|
||||||
|
result = LC_xmalloc(len * sizeof(char));
|
||||||
|
*p = *result = '\0';
|
||||||
|
j = array->lc_used;
|
||||||
|
qq = array->lc_vec;
|
||||||
|
for (i=0; i<j; i++) {
|
||||||
|
#if 1
|
||||||
|
q = qq[i];
|
||||||
|
len2 = strlen(q);
|
||||||
|
strcpy(p, q);
|
||||||
|
p += len2;
|
||||||
|
if (insertSpace) {
|
||||||
|
*p++ = ' ';
|
||||||
|
*p = '\0';
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
strcat(result,(array->lc_vec)[i]);
|
||||||
|
if (insertSpace) {
|
||||||
|
strcat(result," ");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (len > 1) {
|
||||||
|
/* dump the extra space at the end of the string */
|
||||||
|
result[len-1]='\0';
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
46
lib/libcontrib/xalloc.c
Normal file
46
lib/libcontrib/xalloc.c
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* Memory allocation-related routines that call exit(3) if they fail.
|
||||||
|
*
|
||||||
|
* Devin Reade, September 1997
|
||||||
|
*
|
||||||
|
* $Id: xalloc.c,v 1.1 1997/10/03 04:49:40 gdr Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <err.h>
|
||||||
|
#include <contrib.h>
|
||||||
|
|
||||||
|
void *
|
||||||
|
LC_xmalloc (size_t size) {
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
if ((result = malloc(size)) == NULL) {
|
||||||
|
err(1, "malloc failed");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
return (void *) result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *
|
||||||
|
LC_xrealloc (void *ptr, size_t size) {
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
if ((result = realloc(ptr, size)) == NULL) {
|
||||||
|
err(1, "realloc failed");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
return (void *) result;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
LC_xstrdup (const char *str) {
|
||||||
|
char *result;
|
||||||
|
|
||||||
|
if ((result = strdup(str)) == NULL) {
|
||||||
|
err(1, "strdup failed");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
30
lib/libutil/libutil.rez
Normal file
30
lib/libutil/libutil.rez
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Resources for version and comment
|
||||||
|
*
|
||||||
|
* $Id: libutil.rez,v 1.1 1997/10/03 04:47:47 gdr Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LIB "libutil for GNO"
|
||||||
|
#define PORTED "Ported from 4.4BSD by Devin Reade."
|
||||||
|
|
||||||
|
#include "Types.rez"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Version
|
||||||
|
*/
|
||||||
|
resource rVersion (1, purgeable3) {
|
||||||
|
{ 2, 0, 6, /* Version 2.0.6 */
|
||||||
|
alpha, /* development|alpha|beta|final|release */
|
||||||
|
1 }, /* non-final release number */
|
||||||
|
verUS, /* Country */
|
||||||
|
LIB,
|
||||||
|
PORTED
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Comment
|
||||||
|
*/
|
||||||
|
resource rComment (1, purgeable3) {
|
||||||
|
LIB "\n"
|
||||||
|
PORTED
|
||||||
|
};
|
30
lib/liby/liby.rez
Normal file
30
lib/liby/liby.rez
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Resources for version and comment
|
||||||
|
*
|
||||||
|
* $Id: liby.rez,v 1.1 1997/10/03 04:45:43 gdr Exp $
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define LIB "liby for GNO"
|
||||||
|
#define PORTED "Ported from 4.4BSD by Devin Reade."
|
||||||
|
|
||||||
|
#include "Types.rez"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Version
|
||||||
|
*/
|
||||||
|
resource rVersion (1, purgeable3) {
|
||||||
|
{ 2, 0, 6, /* Version 2.0.6 */
|
||||||
|
release, /* development|alpha|beta|final|release */
|
||||||
|
0 }, /* non-final release number */
|
||||||
|
verUS, /* Country */
|
||||||
|
LIB,
|
||||||
|
PORTED
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Comment
|
||||||
|
*/
|
||||||
|
resource rComment (1, purgeable3) {
|
||||||
|
LIB "\n"
|
||||||
|
PORTED
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user