📄 lib.txt
字号:
02726 findex = 0;
02727 e->m1 = 0;
02728 }
02729 if (findex) {
02730 struct EXTEND tc, oldtc;
02731 int count = 0;
02732
02733 oldtc.exp = 0;
02734 oldtc.sign = 0;
02735 oldtc.m1 = 0;
02736 oldtc.m2 = 0;
02737 tc = ten_powers[findex];
02738 while (cmp_ext(e, &tc) >= 0) {
02739 oldtc = tc;
02740 add_ext(&tc, &ten_powers[findex], &tc);
02741 count++;
02742 }
02743 *p++ = count + '0';
02744 oldtc.sign = 1;
02745 add_ext(e, &oldtc, e);
02746 findex--;
02747 continue;
02748 }
02749 if (e->m1) {
02750 m.sign = 1;
02751 add_ext(&ten_powers[0], &m, &oneminm);
02752 m.sign = 0;
02753 if (e->exp >= 0) {
02754 struct EXTEND x;
02755
02756 x.m2 = 0; x.exp = e->exp;
02757 x.sign = 1;
02758 x.m1 = e->m1>>(31-e->exp);
02759 *p++ = (x.m1) + '0';
02760 x.m1 = x.m1 << (31-e->exp);
02761 add_ext(e, &x, e);
02762 }
02763 else *p++ = '0';
02764 /* Check that remainder is still significant */
02765 if (cmp_ext(&m, e) > 0 || cmp_ext(e, &oneminm) > 0) {
02766 if (e->m1 && e->exp >= -1) *(p-1) += 1;
02767 e->m1 = 0;
02768 continue;
02769 }
02770 ten_mult(&m);
02771 ten_mult(e);
02772 }
02773 else *p++ = '0';
02774 }
02775 if (pe >= buf) {
02776 p = pe;
02777 *p += 5; /* round of at the end */
02778 while (*p > '9') {
02779 *p = '0';
02780 if (p > buf) ++*--p;
02781 else {
02782 *p = '1';
02783 ++*decpt;
02784 if (! ecvtflag) {
02785 /* maybe add another digit at the end,
02786 because the point was shifted right
02787 */
02788 if (pe > buf) *pe = '0';
02789 pe++;
02790 }
02791 }
02792 }
02793 *pe = '\0';
02794 }
02795 return buf;
02796 }
02798 _dbl_ext_cvt(double value, struct EXTEND *e)
02799 {
02800 /* Convert double to extended
02801 */
02802 int exponent;
02803
02804 value = frexp(value, &exponent);
02805 e->sign = value < 0.0;
02806 if (e->sign) value = -value;
02807 e->exp = exponent - 1;
02808 value *= 4294967296.0;
02809 e->m1 = value;
02810 value -= e->m1;
02811 value *= 4294967296.0;
02812 e->m2 = value;
02813 }
02815 static struct EXTEND max_d;
02816
02817 double
02818 _ext_dbl_cvt(struct EXTEND *e)
02819 {
02820 /* Convert extended to double
02821 */
02822 double f;
02823 int sign = e->sign;
02824
02825 e->sign = 0;
02826 if (e->m1 == 0 && e->m2 == 0) {
02827 return 0.0;
02828 }
02829 if (max_d.exp == 0) {
02830 _dbl_ext_cvt(DBL_MAX, &max_d);
02831 }
02832 if (cmp_ext(&max_d, e) < 0) {
02833 f = HUGE_VAL;
02834 errno = ERANGE;
02835 }
02836 else f = ldexp((double)e->m1*4294967296.0 + (double)e->m2, e->exp-63);
02837 if (sign) f = -f;
02838 if (f == 0.0 && (e->m1 != 0 || e->m2 != 0)) {
02839 errno = ERANGE;
02840 }
02841 return f;
02842 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/getenv.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
02900 /*
02901 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
02902 * See the copyright notice in the ACK home directory, in the file "Copyright".
02903 */
02904 /* $Header: getenv.c,v 1.4 91/04/24 12:18:03 ceriel Exp $ */
02905
02906 #include <stdlib.h>
02907
02908 extern const char **_penvp;
02909
02910 char *
02911 getenv(const char *name)
02912 {
02913 register const char **v = _penvp;
02914 register const char *p, *q;
02915
02916 if (v == NULL || name == NULL)
02917 return (char *)NULL;
02918 while ((p = *v++) != NULL) {
02919 q = name;
02920 while (*q && (*q == *p++))
02921 q++;
02922 if (*q || (*p != '='))
02923 continue;
02924 return (char *)p + 1;
02925 }
02926 return (char *)NULL;
02927 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/gmtime.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03000 /*
03001 * gmtime - convert the calendar time into broken down time
03002 */
03003 /* $Header: gmtime.c,v 1.4 91/04/22 13:20:27 ceriel Exp $ */
03004
03005 #include <time.h>
03006 #include <limits.h>
03007 #include "loc_time.h"
03008
03009 struct tm *
03010 gmtime(register const time_t *timer)
03011 {
03012 static struct tm br_time;
03013 register struct tm *timep = &br_time;
03014 time_t time = *timer;
03015 register unsigned long dayclock, dayno;
03016 int year = EPOCH_YR;
03017
03018 dayclock = (unsigned long)time % SECS_DAY;
03019 dayno = (unsigned long)time / SECS_DAY;
03020
03021 timep->tm_sec = dayclock % 60;
03022 timep->tm_min = (dayclock % 3600) / 60;
03023 timep->tm_hour = dayclock / 3600;
03024 timep->tm_wday = (dayno + 4) % 7; /* day 0 was a thursday */
03025 while (dayno >= YEARSIZE(year)) {
03026 dayno -= YEARSIZE(year);
03027 year++;
03028 }
03029 timep->tm_year = year - YEAR0;
03030 timep->tm_yday = dayno;
03031 timep->tm_mon = 0;
03032 while (dayno >= _ytab[LEAPYEAR(year)][timep->tm_mon]) {
03033 dayno -= _ytab[LEAPYEAR(year)][timep->tm_mon];
03034 timep->tm_mon++;
03035 }
03036 timep->tm_mday = dayno + 1;
03037 timep->tm_isdst = 0;
03038
03039 return timep;
03040 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isalnum.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03100 #include <ctype.h>
03101
03102 int (isalnum)(int c) {
03103 return isalnum(c);
03104 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isalpha.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03200 #include <ctype.h>
03201
03202 int (isalpha)(int c) {
03203 return isalpha(c);
03204 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isascii.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03300 #include <ctype.h>
03301
03302 int (isascii)(int c) {
03303 return isascii(c);
03304 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/iscntrl.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03400 #include <ctype.h>
03401
03402 int (iscntrl)(int c) {
03403 return iscntrl(c);
03404 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isdigit.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03500 #include <ctype.h>
03501
03502 int (isdigit)(int c) {
03503 return isdigit(c);
03504 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isgraph.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03600 #include <ctype.h>
03601
03602 int (isgraph)(int c) {
03603 return isgraph(c);
03604 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/islower.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03700 #include <ctype.h>
03701
03702 int (islower)(int c) {
03703 return islower(c);
03704 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isprint.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03800 #include <ctype.h>
03801
03802 int (isprint)(int c) {
03803 return isprint(c);
03804 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/ispunct.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
03900 #include <ctype.h>
03901
03902 int (ispunct)(int c) {
03903 return ispunct(c);
03904 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isspace.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04000 #include <ctype.h>
04001
04002 int (isspace)(int c) {
04003 return isspace(c);
04004 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isupper.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04100 #include <ctype.h>
04101
04102 int (isupper)(int c) {
04103 return isupper(c);
04104 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/isxdigit.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04200 #include <ctype.h>
04201
04202 int (isxdigit)(int c) {
04203 return isxdigit(c);
04204 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/labs.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04300 /*
04301 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
04302 * See the copyright notice in the ACK home directory, in the file "Copyright".
04303 */
04304 /* $Header: labs.c,v 1.1 89/05/16 13:08:11 eck Exp $ */
04305
04306 #include <stdlib.h>
04307
04308 long
04309 labs(register long l)
04310 {
04311 return l >= 0 ? l : -l;
04312 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/ldiv.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04400 /*
04401 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
04402 * See the copyright notice in the ACK home directory, in the file "Copyright".
04403 */
04404 /* $Header: ldiv.c,v 1.3 90/03/05 13:48:03 eck Exp $ */
04405
04406 #include <stdlib.h>
04407
04408 static long tmp = -1;
04409
04410 ldiv_t
04411 ldiv(register long numer, register long denom)
04412 {
04413 ldiv_t r;
04414
04415 /* The assignment of tmp should not be optimized !! */
04416 if (tmp == -1) {
04417 tmp = (tmp / 2 == 0);
04418 }
04419 if (numer == 0) {
04420 r.quot = numer / denom; /* might trap if denom == 0 */
04421 r.rem = numer % denom;
04422 } else if ( !tmp && ((numer < 0) != (denom < 0))) {
04423 r.quot = (numer / denom) + 1;
04424 r.rem = numer - (numer / denom + 1) * denom;
04425 } else {
04426 r.quot = numer / denom;
04427 r.rem = numer % denom;
04428 }
04429 return r;
04430 }
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
src/lib/ansi/localeconv.c
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
04500 /*
04501 * localeconv - set components of a struct according to current locale
04502 */
04503 /* $Header: localeconv.c,v 1.2 89/12/18 15:48:58 eck Exp $ */
04504
04505 #include <limits.h>
04506 #include <locale.h>
04507
04508 extern struct lconv _lc;
0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -