All pastes #231828 Raw Edit

Stuff

public c v1 · immutable
·published 2006-11-01 01:48 UTC
rendered paste body
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <xosd.h>#include <unistd.h>#include <errno.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.h>int main (int argc, char *argv[]){	FILE *fp;	xosd *osd;	char buffer [1024];	char *newline;	char *title;	char *font = "-urw-serpentine d-bold-r-normal-*-*-720-*-*-p-*-iso8859-1";	char *colour = "rgb:0/0/f";	int outline_offset=2;	char* outline_colour="rgb:0/0/7";	char* shadow_colour="rgb:0/0/3";	int delay = 5;	xosd_pos pos = XOSD_bottom;	int voffset = 150;	int hoffset = 0;	int shadow = 7;	int scroll_age = 0;	struct timeval old_age,new_age;	int screen_line = 0;	xosd_align align=XOSD_center;	fd_set selset;//	fp = stdin;	umask(0);	mkfifo("/tmp/onscreen",0622);	fp = fopen("/tmp/onscreen","r");//	Stupid hack to keep the FIFO open.	fopen("/tmp/onscreen","w");	osd = xosd_create (2);	if (!osd)    {		fprintf (stderr, "Error initializing osd: %s\n", xosd_error);		return EXIT_FAILURE;    }	xosd_set_shadow_offset(osd, shadow);	xosd_set_shadow_colour(osd, shadow_colour);	xosd_set_outline_offset(osd, outline_offset);	xosd_set_outline_colour(osd, outline_colour);	xosd_set_colour(osd, colour);	xosd_set_timeout(osd, delay);	xosd_set_pos(osd, pos);	xosd_set_vertical_offset(osd, voffset);	xosd_set_horizontal_offset(osd, hoffset);	xosd_set_align(osd, align);	if (xosd_set_font(osd, font))    {		/* This is critical, because fontset=NULL, will segfault later! */		fprintf (stderr, "ABORT: %s\n", xosd_error);		return EXIT_FAILURE;    }	/* Not really needed, but at least we aren't throwing around an unknown value */	old_age.tv_sec=0;	if (scroll_age)		gettimeofday(&old_age,0);	while (1)    {	FD_ZERO(&selset);	FD_SET(fileno(fp),&selset);	select(fileno(fp)+1,&selset,NULL,NULL,NULL);    		if (fgets (buffer, sizeof(buffer)-1, fp))		{			if ((newline = strchr (buffer, '\n')))				newline[0] = '\0';			if(strlen(buffer)>2 && buffer[0]=='%') {				title=strstr(buffer,":");				if(title)					xosd_display (osd, 0, XOSD_string,						title+1);				xosd_display (osd, 1, XOSD_percentage,					atoi(buffer+1));			} else if(strlen(buffer)>2 && buffer[0]=='|') {				title=strstr(buffer,":");				if(title)					xosd_display (osd, 0, XOSD_string,						title+1);				xosd_display (osd, 1, XOSD_slider,					atoi(buffer+1));			} else {				xosd_display (osd, 0, XOSD_string,					"");				xosd_display (osd, 1, XOSD_string,					buffer);			}			screen_line++;		}		else		{			if (!feof(fp))			{				fprintf(stderr,"Error occured reading input file: %s\n",strerror(errno));				exit(1);			}		}		old_age.tv_sec = new_age.tv_sec;    }	fclose (fp);	if (xosd_is_onscreen(osd)) {		xosd_wait_until_no_display(osd);	}	xosd_destroy (osd);	return EXIT_SUCCESS;}/* vim: ai si sw=4 */