Annotation of researchv9/jtools/src/pi/lib.c, revision 1.1

1.1     ! root        1: #include <CC/sys/types.h>
        !             2: #include <CC/sys/stat.h>
        !             3: #include <sgtty.h>
        !             4: #include <stdio.h>
        !             5: #include <sys/param.h>
        !             6: #include <sys/dir.h>
        !             7: #include <errno.h>
        !             8: #include "lib.h"
        !             9: #include <ctype.h>
        !            10: #include <pads.pub>
        !            11: SRCFILE("lib.c")
        !            12: 
        !            13: char *index(register char *sp, char c)
        !            14: {
        !            15:         do {
        !            16:                 if (*sp == c) return sp;
        !            17:         } while (*sp++);
        !            18:         return 0;
        !            19: }
        !            20: 
        !            21: char *rindex(register char *sp, char c)
        !            22: {
        !            23:         register char *r = 0;
        !            24: 
        !            25:         do {
        !            26:                 if (*sp == c)
        !            27:                         r = sp;
        !            28:         } while (*sp++);
        !            29:         return r;
        !            30: }
        !            31: 
        !            32: char *basename(char *path)
        !            33: {
        !            34:        char *lsi = rindex(path, '/');
        !            35:        return lsi ? lsi+1 : path; 
        !            36: }
        !            37: 
        !            38: char *slashname(char *path)
        !            39: {
        !            40:        return sf("%0.*s", strlen(path)-strlen(basename(path)),  path);
        !            41: }
        !            42: 
        !            43: int alldigits(char *p)
        !            44: {
        !            45:        if( !p ) return 0;
        !            46:        while( isdigit(*p) ) ++p;
        !            47:        return !*p;
        !            48: }
        !            49: 
        !            50: char *Name(char *s, int i)
        !            51: {
        !            52:        static char buf[8][32];
        !            53:        static cycle;
        !            54:        char *t = buf[(cycle++,cycle%=8)];
        !            55:        sprintf( t, s, i );
        !            56:        return t;
        !            57: }
        !            58:        
        !            59: char *SysErr(char *s)
        !            60: {
        !            61:        extern int errno, sys_nerr;
        !            62:        extern char *sys_errlist[];
        !            63: 
        !            64:        if( errno>=sys_nerr || errno<1 ) return sf( "%s errno=%d", s, errno);
        !            65:        return sf( "%s %s", s, sys_errlist[errno] );
        !            66: }
        !            67: 
        !            68: char *strcatfmt(char *s, char *f ... )
        !            69: {
        !            70:        int *a = (int*)&f;
        !            71:        sprintf( &s[strlen(s)], f, a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8] );
        !            72:        return s;
        !            73: }
        !            74: 
        !            75: int ReadOK( int fd, char *addr, int req )
        !            76: {
        !            77:        int got;
        !            78: 
        !            79:        got = read(fd,addr,req);
        !            80:        trace( "ReadOK(%d,%d,%d) %d", fd, addr, req, got );
        !            81:        return got == req;
        !            82: }
        !            83: 
        !            84: int WriteOK( int fd, char *addr, int req )
        !            85: {
        !            86:        int got;
        !            87: 
        !            88:        got = write(fd,addr,req);
        !            89:        trace( "WriteOK(%d,%d,%d) %d", fd, addr, req, got );
        !            90:        return got == req;
        !            91: }
        !            92: 
        !            93: long modified( int fd )
        !            94: {
        !            95:        struct stat buf;
        !            96: 
        !            97:        fstat( fd, &buf );
        !            98:        trace( "fd=%d buf.st_mtime=%d", fd, buf.st_mtime );
        !            99:        return buf.st_mtime;
        !           100: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.