Remove the cruft of the user to have to define the different font styles.
This commit is contained in:
		
							
								
								
									
										60
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										60
									
								
								st.c
									
									
									
									
									
								
							| @@ -336,6 +336,7 @@ static int isfullutf8(char *, int); | |||||||
| static void *xmalloc(size_t); | static void *xmalloc(size_t); | ||||||
| static void *xrealloc(void *, size_t); | static void *xrealloc(void *, size_t); | ||||||
| static void *xcalloc(size_t nmemb, size_t size); | static void *xcalloc(size_t nmemb, size_t size); | ||||||
|  | static char *smstrcat(char *, ...); | ||||||
|  |  | ||||||
| static void (*handler[LASTEvent])(XEvent *) = { | static void (*handler[LASTEvent])(XEvent *) = { | ||||||
| 	[KeyPress] = kpress, | 	[KeyPress] = kpress, | ||||||
| @@ -393,6 +394,44 @@ xcalloc(size_t nmemb, size_t size) { | |||||||
| 	return p; | 	return p; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | char * | ||||||
|  | smstrcat(char *src, ...) | ||||||
|  | { | ||||||
|  | 	va_list fmtargs; | ||||||
|  | 	char *ret, *p, *v; | ||||||
|  | 	int len, slen, flen; | ||||||
|  |  | ||||||
|  | 	len = slen = strlen(src); | ||||||
|  |  | ||||||
|  | 	va_start(fmtargs, src); | ||||||
|  | 	for(;;) { | ||||||
|  | 		v = va_arg(fmtargs, char *); | ||||||
|  | 		if(v == NULL) | ||||||
|  | 			break; | ||||||
|  | 		len += strlen(v); | ||||||
|  | 	} | ||||||
|  | 	va_end(fmtargs); | ||||||
|  |  | ||||||
|  | 	p = ret = xmalloc(len+1); | ||||||
|  | 	memmove(p, src, slen); | ||||||
|  | 	p += slen; | ||||||
|  |  | ||||||
|  | 	va_start(fmtargs, src); | ||||||
|  | 	for(;;) { | ||||||
|  | 		v = va_arg(fmtargs, char *); | ||||||
|  | 		if(v == NULL) | ||||||
|  | 			break; | ||||||
|  | 		flen = strlen(v); | ||||||
|  | 		memmove(p, v, flen); | ||||||
|  | 		p += flen; | ||||||
|  | 	} | ||||||
|  | 	va_end(fmtargs); | ||||||
|  |  | ||||||
|  | 	ret[len] = '\0'; | ||||||
|  |  | ||||||
|  | 	return ret; | ||||||
|  | } | ||||||
|  |  | ||||||
| int | int | ||||||
| utf8decode(char *s, long *u) { | utf8decode(char *s, long *u) { | ||||||
| 	uchar c; | 	uchar c; | ||||||
| @@ -2017,11 +2056,22 @@ xinitfont(Font *f, char *fontstr) { | |||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| initfonts(char *fontstr, char *bfontstr, char *ifontstr, char *ibfontstr) { | initfonts(char *fontstr) { | ||||||
|  | 	char *fstr; | ||||||
|  |  | ||||||
| 	xinitfont(&dc.font, fontstr); | 	xinitfont(&dc.font, fontstr); | ||||||
| 	xinitfont(&dc.bfont, bfontstr); |  | ||||||
| 	xinitfont(&dc.ifont, ifontstr); | 	fstr = smstrcat(fontstr, ":weight=bold", NULL); | ||||||
| 	xinitfont(&dc.ibfont, ibfontstr); | 	xinitfont(&dc.bfont, fstr); | ||||||
|  | 	free(fstr); | ||||||
|  |  | ||||||
|  | 	fstr = smstrcat(fontstr, ":slant=italic,oblique", NULL); | ||||||
|  | 	xinitfont(&dc.ifont, fstr); | ||||||
|  | 	free(fstr); | ||||||
|  |  | ||||||
|  | 	fstr = smstrcat(fontstr, ":weight=bold:slant=italic,oblique", NULL); | ||||||
|  | 	xinitfont(&dc.ibfont, fstr); | ||||||
|  | 	free(fstr); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| @@ -2037,7 +2087,7 @@ xinit(void) { | |||||||
| 	xw.vis = XDefaultVisual(xw.dpy, xw.scr); | 	xw.vis = XDefaultVisual(xw.dpy, xw.scr); | ||||||
|  |  | ||||||
| 	/* font */ | 	/* font */ | ||||||
| 	initfonts(FONT, BOLDFONT, ITALICFONT, ITALICBOLDFONT); | 	initfonts(FONT); | ||||||
|  |  | ||||||
| 	/* XXX: Assuming same size for bold font */ | 	/* XXX: Assuming same size for bold font */ | ||||||
| 	xw.cw = dc.font.rbearing - dc.font.lbearing; | 	xw.cw = dc.font.rbearing - dc.font.lbearing; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user