// Copyright status: this file is in the public domain. #include #include #include #include extern const char *__progname; static const char *defaults_string = "\ *Foreground: white\n\ *Background: black\n\ *BorderColor: white\n\ *BorderWidth: 1\n\ *BorderMargin: 0\n\ *Colours*Board: #b80\n\ *Colours*Lines: #000\n\ *Colours*Black: #000\n\ *Colours*White: #fff\n\ *Colours*Mark: #f00\n\ *Mag: 35\n\ *PieceSize: 80%\n\ *LineSize: 5%\n\ *StarSize: 10%\n\ "; static LX_DB *db; static void setup_db(void) { LX_DB *db2; int ec; char *str; char *home; char hostname[256]; int i; ec = 0; db = lx_db_from_string(defaults_string,-1,LX_DB_IGNORE_ERR|LX_DB_ERR_COUNT,&ec); if (!db || ec) { fprintf(stderr,"%s: invalid defaults string (error count = %d)\n",__progname,ec); exit(1); } home = getenv("HOME"); if (home) { for (i=1;i>=0;i--) { switch (i) { case 1: str = malloc(strlen(home)+1+10+1); sprintf(str,"%s/.Xdefaults",home); break; case 0: gethostname(&hostname[0],(sizeof(hostname)/sizeof(hostname[0]))-1); hostname[(sizeof(hostname)/sizeof(hostname[0]))-1] = '\0'; str = malloc(strlen(home)+1+11+strlen(&hostname[0])+1); sprintf(str,"%s/.Xdefaults-%s",home,&hostname[0]); break; default: abort(); break; } ec = 0; db2 = lx_db_from_file(str,LX_DB_IGNORE_ERR|LX_DB_ERR_COUNT,&ec); if (db2) { if (ec) { fprintf(stderr,"%s: %s: invalid defaults file (error count = %d)\n",__progname,str,ec); } else { lx_db_merge(db,db2); } lx_db_done(db2); } free(str); } } } int main(void); int main(void) { setup_db(); return(0); }