Annotation of researchv9/jerq/src/sysmon/icon.c, revision 1.1

1.1     ! root        1: #include <stdio.h>
        !             2: #include <sys/types.h>
        !             3: #include <sys/stat.h>
        !             4: 
        !             5: /* stuff for faces */
        !             6: #define ICONSIZE 48
        !             7: #define ICONBYTES (ICONSIZE*(ICONSIZE/8))
        !             8: #define ICONWORDS (ICONSIZE*(ICONSIZE/16))
        !             9: #define ICONROOT "/n/face/"
        !            10: #define UNKNOWNMACH "misc."
        !            11: #define UNKNOWNUSER "unknown"
        !            12: #define RESOLUTION "/48x48x1"
        !            13: short blankface[]={
        !            14: #ifdef LITTLEENDIAN
        !            15:        0x0000,0x1FA0,0x0000, 0x0000,0x7FFC,0x0000,
        !            16:        0x0000,0xFEFF,0x0000, 0x0001,0xBFBF,0xC000,
        !            17:        0x0001,0xEFFA,0xE000, 0x0002,0x00FF,0xF800,
        !            18:        0x0002,0x007F,0xFF80, 0x0000,0x001F,0x7E00,
        !            19:        0x000C,0x001F,0xFFC0, 0x0000,0x0015,0xFFC0,
        !            20:        0x0030,0x001F,0xFFF0, 0x0070,0x000F,0xFEB0,
        !            21:        0x00C0,0x0007,0xFFF8, 0x00E0,0x0007,0xFFE8,
        !            22:        0x01E0,0x0003,0xFFF8, 0x03C0,0x0001,0xFFF8,
        !            23:        0x03E0,0x0001,0xFFF8, 0x07D0,0x0000,0xFFF0,
        !            24:        0x0FF0,0x0000,0x3FF8, 0x0FE0,0x0000,0x7FF8,
        !            25:        0x1FF0,0x0000,0x7FF8, 0x1FF0,0x0000,0x7FF8,
        !            26:        0x1FF0,0x0000,0x7FF8, 0x1FD0,0x0000,0x7FF0,
        !            27:        0x0FE0,0x0000,0xFFF0, 0x1FA0,0x0000,0x3FF0,
        !            28:        0x0320,0x0000,0x1FE0, 0x0B80,0x0000,0x1F80,
        !            29:        0x0180,0x0000,0x1780, 0x0080,0x0000,0x1F00,
        !            30:        0x0000,0x0000,0x1F00, 0x0180,0x0000,0x0E00,
        !            31:        0x0380,0x0000,0x1E00, 0x0180,0x0000,0x0FC0,
        !            32:        0x0080,0x0000,0x0F80, 0x01C0,0x0000,0x0F80,
        !            33:        0x00C0,0x0000,0x3F80, 0x0040,0x0000,0x7F00,
        !            34:        0x0060,0x0000,0xCE00, 0x0004,0x0000,0x6000,
        !            35:        0x0000,0x0001,0xF800, 0x0002,0x0001,0xA000,
        !            36:        0x0000,0x0003,0xC000, 0x0002,0x000F,0x4000,
        !            37:        0x0000,0x804B,0xC000, 0x0002,0xBBFE,0x8000,
        !            38:        0x0000,0x8FFB,0xC000, 0x0001,0x7ABF,0xC000,
        !            39: #else
        !            40:        0x0000,0xA01F,0x0000, 0x0000,0xFC7F,0x0000,
        !            41:        0x0000,0xFFFE,0x0000, 0x0100,0xBFBF,0x00C0,
        !            42:        0x0100,0xFAEF,0x00E0, 0x0200,0xFF00,0x00F8,
        !            43:        0x0200,0x7F00,0x80FF, 0x0000,0x1F00,0x007E,
        !            44:        0x0C00,0x1F00,0xC0FF, 0x0000,0x1500,0xC0FF,
        !            45:        0x3000,0x1F00,0xF0FF, 0x7000,0x0F00,0xB0FE,
        !            46:        0xC000,0x0700,0xF8FF, 0xE000,0x0700,0xE8FF,
        !            47:        0xE001,0x0300,0xF8FF, 0xC003,0x0100,0xF8FF,
        !            48:        0xE003,0x0100,0xF8FF, 0xD007,0x0000,0xF0FF,
        !            49:        0xF00F,0x0000,0xF83F, 0xE00F,0x0000,0xF87F,
        !            50:        0xF01F,0x0000,0xF87F, 0xF01F,0x0000,0xF87F,
        !            51:        0xF01F,0x0000,0xF87F, 0xD01F,0x0000,0xF07F,
        !            52:        0xE00F,0x0000,0xF0FF, 0xA01F,0x0000,0xF03F,
        !            53:        0x2003,0x0000,0xE01F, 0x800B,0x0000,0x801F,
        !            54:        0x8001,0x0000,0x8017, 0x8000,0x0000,0x001F,
        !            55:        0x0000,0x0000,0x001F, 0x8001,0x0000,0x000E,
        !            56:        0x8003,0x0000,0x001E, 0x8001,0x0000,0xC00F,
        !            57:        0x8000,0x0000,0x800F, 0xC001,0x0000,0x800F,
        !            58:        0xC000,0x0000,0x803F, 0x4000,0x0000,0x007F,
        !            59:        0x6000,0x0000,0x00CE, 0x0400,0x0000,0x0060,
        !            60:        0x0000,0x0100,0x00F8, 0x0200,0x0100,0x00A0,
        !            61:        0x0000,0x0300,0x00C0, 0x0200,0x0F00,0x0040,
        !            62:        0x0000,0x4B80,0x00C0, 0x0200,0xFEBB,0x0080,
        !            63:        0x0000,0xFB8F,0x00C0, 0x0100,0xBF7A,0x00C0,
        !            64: #endif
        !            65: };
        !            66: /* imported */
        !            67: extern char *thissys;
        !            68: extern int sendjerq();
        !            69: 
        !            70: /*
        !            71:  *     send an icon to the jerq 
        !            72:  */
        !            73: static int
        !            74: HexToDec(Hex)
        !            75: int Hex;
        !            76: {
        !            77:        if ((Hex>='0') && (Hex<='9')) return(Hex-'0');
        !            78:        if ((Hex>='A') && (Hex<='F')) return(10+Hex-'A');
        !            79:        if ((Hex>='a') && (Hex<='f')) return(10+Hex-'a');
        !            80:        return(-1);
        !            81: }
        !            82: 
        !            83: static char *
        !            84: iconpath(machine, user)
        !            85:        char *machine, *user;
        !            86: {
        !            87:        static char filename[128];
        !            88: 
        !            89:        if (*machine == '\0')
        !            90:                machine = thissys;
        !            91:        strcpy(filename, ICONROOT);
        !            92:        strcat(filename, machine);
        !            93:        strcat(filename, "/");
        !            94:        strcat(filename, user);
        !            95:        strcat(filename, RESOLUTION);
        !            96:        return filename;
        !            97: }
        !            98: 
        !            99: extern int
        !           100: sendicon(machine, user)
        !           101:        char *machine, *user;
        !           102: {
        !           103:        FILE *icon;
        !           104:        struct stat statbuf;
        !           105:        char *iconp;
        !           106:        char buf[6], IconBuf[ICONBYTES];
        !           107:        int i,val,c=0;
        !           108: 
        !           109:        if ((icon = fopen(iconpath(machine, user), "r")) == NULL &&
        !           110:            (icon = fopen(iconpath(UNKNOWNMACH, user), "r")) == NULL &&
        !           111:            (icon = fopen(iconpath(machine, UNKNOWNUSER), "r")) == NULL &&
        !           112:            (icon = fopen(iconpath(UNKNOWNMACH, UNKNOWNUSER), "r")) == NULL)
        !           113:                iconp=(char *)blankface;
        !           114:        else{
        !           115:                iconp=IconBuf;
        !           116:                for (i=0; i<ICONBYTES && c!=EOF; i+=2) {
        !           117:                        while ((c=getc(icon))!='x' && c!=EOF)
        !           118:                                        ;
        !           119:                        val = HexToDec(getc(icon))<<4;
        !           120:                        val |= HexToDec(getc(icon));
        !           121:                        IconBuf[i]=val;
        !           122:                        val = HexToDec(getc(icon))<<4;
        !           123:                        val |= HexToDec(c=getc(icon));
        !           124:                        IconBuf[i+1]=val;
        !           125:                }
        !           126:                fclose(icon);
        !           127:        }
        !           128:        sendjerq('I', iconp, ICONBYTES);
        !           129: }

unix.superglobalmegacorp.com

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