|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.