|
|
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.