| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -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); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	xinitfont(&dc.ibfont, ibfontstr); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	fstr = smstrcat(fontstr, ":weight=bold", NULL); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	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; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |