1/* $NetBSD: libc.h,v 1.8 2009/01/15 15:58:42 christos Exp $ */ 2 3/* 4 * Copyright (c) 1991 Carnegie Mellon University 5 * All Rights Reserved. 6 * 7 * Permission to use, copy, modify and distribute this software and its 8 * documentation is hereby granted, provided that both the copyright 9 * notice and this permission notice appear in all copies of the 10 * software, derivative works or modified versions, and any portions 11 * thereof, and that both notices appear in supporting documentation. 12 * 13 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 14 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR 15 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 16 * 17 * Carnegie Mellon requests users of this software to return to 18 * 19 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 20 * School of Computer Science 21 * Carnegie Mellon University 22 * Pittsburgh PA 15213-3890 23 * 24 * any improvements or extensions that they make and grant Carnegie the rights 25 * to redistribute these changes. 26 */ 27/* 28 ********************************************************************** 29 * HISTORY 30 31 * Revision 1.7 89/04/03 11:10:45 vanryzin 32 * Changed definition of qsort for c++ to indicate the procedure 33 * passed to qsort has parameters. Since we were unsure if ANSI C 34 * could handle the syntax I placed the new definition within #if 35 * defined(c_plusplus) conditionals. This may not be necessary 36 * and perhaps should be fixed at a later time. 37 * [89/04/03 vanryzin] 38 * 39 * Revision 1.6 89/02/05 15:55:57 gm0w 40 * Added extern char *errmsg(). 41 * [89/02/04 gm0w] 42 * 43 * Revision 1.5 89/01/20 15:34:40 gm0w 44 * Moved all of the STDC changes to other existing include files 45 * back into this one. Added non-STDC extern declarations for 46 * all functions without int return values to match those defined 47 * by STDC. Added include of sysent.h. Removed obsolete cdate 48 * extern declaration. 49 * [88/12/17 gm0w] 50 * 51 * Revision 1.4 88/12/22 16:58:56 mja 52 * Correct __STDC__ parameter type for getenv(). 53 * [88/12/20 dld] 54 * 55 * Revision 1.3 88/12/14 23:31:42 mja 56 * Made file reentrant. Added declarations for __STDC__. 57 * [88/01/06 jjk] 58 * 59 * 30-Apr-88 Glenn Marcy (gm0w) at Carnegie-Mellon University 60 * Added pathof() extern. 61 * 62 * 01-Dec-85 Glenn Marcy (gm0w) at Carnegie-Mellon University 63 * Added getname() extern. 64 * 65 * 29-Nov-85 Glenn Marcy (gm0w) at Carnegie-Mellon University 66 * Added lseek() extern. 67 * 68 * 02-Nov-85 Glenn Marcy (gm0w) at Carnegie-Mellon University 69 * Added estrdup() extern. 70 * 71 * 14-Aug-81 Mike Accetta (mja) at Carnegie-Mellon University 72 * Created. 73 * 74 ********************************************************************** 75 */ 76 77#ifndef _LIBC_H_ 78#define _LIBC_H_ 1 79 80#ifndef _TYPES_ 81#include <sys/types.h> 82#endif /* _TYPES_ */ 83 84#ifndef FILE 85#include <stdio.h> 86#endif /* FILE */ 87 88#ifndef _STRINGS_H_ 89#include <strings.h> 90#endif /* _STRINGS_H_ */ 91 92#ifndef _STRING_H_ 93#include <string.h> 94#endif /* _STRINGS_H_ */ 95 96#ifndef _TIME_H_ 97#include <time.h> 98#endif /* _TIME_H_ */ 99 100/* CMU stdio additions */ 101extern FILE *fopenp(const char*, const char*, char*, char*); 102extern FILE *fwantread(const char*, const char*, const char*, const char*); 103extern FILE *fwantwrite(const char*, const char*, const char*, const char*, 104 int); 105 106/* CMU string routines */ 107extern char* foldup(char*, const char*); 108extern char* folddown(char*, const char*); 109extern char* sindex(const char*, const char*); 110extern char _argbreak; 111extern char* getstr(const char*, char*, char*); 112extern int getstab(const char*, const char**, const char*); 113extern int getsearch(const char*, const char**, const char*); 114extern char* strarg(const char**, const char*, const char*, char*, char*); 115extern int stabarg(const char**, const char*, const char*, const char**, 116 const char*); 117extern int searcharg(const char**, const char*, const char*, const char**, 118 const char*); 119extern int getint(const char*, int, int, int); 120extern int intarg(const char**, const char*, const char*, int, int, int); 121extern long getlong(const char*, long, long, long); 122extern long longarg(const char**, const char*, const char*, long, long, long); 123extern short getshort(const char*, short, short, short); 124extern short shortarg(const char**, const char*, const char*, 125 short, short, short); 126extern float getfloat(const char*, float, float, float); 127extern float floatarg(const char**, const char*, const char*, 128 float, float, float); 129extern double getdouble(const char*, double, double, double); 130extern double doublearg(const char**, const char*, const char*, 131 double, double, double); 132extern unsigned int getoct(const char*, unsigned int, unsigned int, 133 unsigned int); 134extern unsigned int octarg(const char**, const char*, const char*, 135 unsigned int, unsigned int, unsigned int); 136extern unsigned int gethex(const char*, unsigned int, unsigned int, 137 unsigned int); 138extern unsigned int hexarg(const char**, const char*, const char*, 139 unsigned int, unsigned int, unsigned int); 140extern unsigned int atoh(const char*); 141extern char *concat(const char*, int, ...); 142 143/* CMU library routines */ 144extern char *getname(int); 145extern char *pathof(char *); 146 147/* CMU time additions */ 148extern long gtime(const struct tm*); 149extern long atot(const char*); 150 151/* 4.3 BSD standard library routines; taken from man(3) */ 152#if defined(c_plusplus) 153typedef int (*PFI2)(...); 154#endif /* c_plusplus */ 155 156#ifndef __UNCONST 157#define __UNCONST(a) (void *)(intptr_t)(a) 158#endif 159#endif /* not _LIBC_H_ */ 160