volatile bool run=true, dimmed=false;
void sig_handler_ready(int sig) {
	printf("sig=%i\n", sig);
	if(sig==SIGTERM || sig==SIGINT) {
		run=false;
	} else if(sig==SIGUSR1) {
		dimmed=true;
	} else if(sig==SIGUSR2) {
		dimmed=false;
	}
}


int trim(char* cell, char old_screen[]) {
	char ch;
	int c, cc=strlen(cell)-1, cc2=0;
	for (c=0; c<strlen(cell); c++) {
		ch=cell[c];
		if (old_screen[c] != ch) {
	    cc=c;
	    break;
		}
	}
	for (c=strlen(cell)-1; c>=cc; c--) {
		ch=cell[c];
		if (old_screen[c] != ch) {
	    cc2=c;
	    break;
		}
	}
//printf("old_screen='%s'; cell='%s'; cc=%i; cc2=%i\n", old_screen, cell, cc, cc2);
	if(cc<=cc2) {
		cell[cc2+1]=0;
		memcpy(old_screen+cc, cell+cc, cc2-cc+1);
		return cc;
	}
	else {
		return -1;
	}
}


void parseFTDIString(char* argv, int* vid, int* pid, char** serial) {
	                 strtok(argv, ":");
	*vid    = strtol(strtok(NULL, ":"), NULL, 0);
	*pid    = strtol(strtok(NULL, ":"), NULL, 0);
	*serial =        strtok(NULL, ":");
}
