static gchar *get_snipfile(gboolean forload) { GFile *uri; gchar *filename; uri = user_bfdir("snippets"); filename = g_file_get_path(uri); g_object_unref(uri); if (forload) { /* if it does not exist, return PKGDATADIR"/snippets" so we start with the default file */ uri = return_first_existing_filename(filename, PKGDATADIR"/snippets","data/snippets","../data/snippets",NULL); g_free(filename); if (!uri) { return NULL; } filename = g_file_get_path(uri); g_object_unref(uri); } return filename; }
/* static GList *arraylist_load_defaults(GList *thelist, const gchar *filename, const gchar *name) { GList *deflist,*tmplist = g_list_first(thelist); if (name) { while (tmplist) { gchar **tmparr = tmplist->data; if (strcmp(tmparr[0],name)==0) { GList *todelete = tmplist; tmplist = g_list_next(tmplist); if (tmplist) { g_list_delete_link(tmplist, todelete); g_strfreev(tmparr); g_list_free_1(todelete); } else { thelist = NULL; g_strfreev(tmparr); g_list_free(todelete); } } else { tmplist = g_list_next(tmplist); } } } else { while (tmplist) { g_strfreev((gchar **)tmplist->data); tmplist = g_list_next(tmplist); } g_list_free(thelist); thelist = NULL; } if (name) { deflist = get_list(filename,NULL,TRUE); tmplist = g_list_first(deflist); while (tmplist) { gchar **tmparr = tmplist->data; DEBUG_MSG("arraylist_load_defaults, testing if %s should be added (requested=%s)\n",tmparr[0],name); if (strcmp(tmparr[0],name)==0) { DEBUG_MSG("adding %s to thelist\n",tmparr[0]); thelist = g_list_append(thelist, duplicate_stringarray(tmparr)); } tmplist = g_list_next(tmplist); } free_arraylist(deflist); } else { thelist = get_list(filename,NULL,TRUE); } return thelist; } */ void rcfile_parse_main(void) { gchar *filename; DEBUG_MSG("rcfile_parse_main, started\n"); /* set the props struct completely empty */ memset(&main_v->props, 0, sizeof(Tproperties)); /*Make the config_rc list ready for filling with data and set default values */ main_configlist = props_init_main(NULL); filename = g_strconcat(g_get_home_dir(), "/.bluefish/rcfile_v2", NULL); if (!parse_config_file(main_configlist, filename)) { /* should we initialize some things ?? */ } g_free(filename); /* do some default configuration for the lists */ if (main_v->props.browsers == NULL) { /* if the user does not have browsers --> set them to defaults values */ gchar **arr; arr = array_from_arglist(_("Galeon"), "galeon -x %s&",NULL); main_v->props.browsers = g_list_append(main_v->props.browsers,arr); arr = array_from_arglist(_("Mozilla"), "mozilla -remote 'openURL(%s, new-window)' || mozilla %s&",NULL); main_v->props.browsers = g_list_append(main_v->props.browsers,arr); arr = array_from_arglist(_("Opera"), "opera -remote 'openURL(%s,new-window)' || opera %s&",NULL); main_v->props.browsers = g_list_append(main_v->props.browsers,arr); arr = array_from_arglist(_("Netscape"), "/usr/lib/netscape/477/communicator/communicator-smotif %s&",NULL); main_v->props.browsers = g_list_append(main_v->props.browsers,arr); arr = array_from_arglist(_("Gnome default"), "gnome-moz-remote --newwin %s&",NULL); main_v->props.browsers = g_list_append(main_v->props.browsers,arr); } { gchar *defaultfile = return_first_existing_filename(PKGDATADIR"encodings.default", "data/encodings.default", "../data/encodings.default",NULL); if (main_v->props.encodings == NULL) { /* if the user does not have encodings --> set them to defaults values */ if (defaultfile) { main_v->props.encodings = get_list(defaultfile,NULL,TRUE); } else { g_print("Unable to find '"PKGDATADIR"encodings.default'\n"); } } else { if (config_file_is_newer(main_v->globses.lasttime_encodings,defaultfile)) { main_v->props.encodings = arraylist_load_new_identifiers_from_file(main_v->props.encodings,defaultfile,1); main_v->globses.lasttime_encodings = TIME_T_TO_GINT(time(NULL)); } } g_free(defaultfile); } if (main_v->props.outputbox==NULL) { /* if the user does not have outputbox settings --> set them to defaults values */ main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("make"),"([a-zA-Z0-9/_.-]+):([0-9]+):(.*)","1","2","3","make","1",NULL)); main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("weblint HTML checker"),"([a-zA-Z0-9/_.-]+) \\(([0-9:]+)\\) (.*)","1","2","3","weblint '%s'","0",NULL)); main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("tidy HTML validator"),"line ([0-9]+) column [0-9]+ - (.*)","-1","1","2","tidy -qe '%s'","0",NULL)); main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("javac"),"([a-zA-Z0-9/_.-]+):([0-9]+):(.*)","1","2","3","javac '%s'","0",NULL)); main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("xmllint XML checker"),"([a-zA-Z0-9/_.-]+)\\:([0-9]+)\\: (.*)","1","2","3","xmllint --noout --valid '%s'","0",NULL)); main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(_("php"),"(.*) in (/[a-zA-Z0-9/_.-]+) on line ([0-9]+)","1","2","3","php '%s'","0",NULL)); /* main_v->props.outputbox = g_list_append(main_v->props.outputbox,array_from_arglist(,NULL)); */ } if (main_v->props.external_commands == NULL) { /* if the user does not have external commands --> set them to defaults values */ gchar **arr; arr = array_from_arglist(_("Dos2Unix filter"), "cat '%s' | dos2unix > '%f'",NULL); main_v->props.external_commands = g_list_append(main_v->props.external_commands,arr); arr = array_from_arglist(_("Tidy cleanup filter"), "cat '%s' | tidy -utf8 -q >'%f' 2>/dev/null",NULL); main_v->props.external_commands = g_list_append(main_v->props.external_commands,arr); } { gchar *defaultfile = return_first_existing_filename(PKGDATADIR"filetypes.default", "data/filetypes.default", "../data/filetypes.default",NULL); if (main_v->props.filetypes == NULL) { /* if the user does not have file-types --> set them to defaults values */ if (defaultfile) { main_v->props.filetypes = get_list(defaultfile,NULL,TRUE); } else { g_print("Unable to find '"PKGDATADIR"filetypes.default'\n"); } } else { if (config_file_is_newer(main_v->globses.lasttime_filetypes,defaultfile)) { main_v->props.filetypes = arraylist_load_new_identifiers_from_file(main_v->props.filetypes,defaultfile,1); main_v->globses.lasttime_filetypes = TIME_T_TO_GINT(time(NULL)); } } g_free(defaultfile); } if (main_v->props.filefilters == NULL) { /* if the user does not have file filters --> set them to defaults values */ gchar **arr; arr = array_from_arglist(_("C programming"),"1","c:image", NULL); main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr); arr = array_from_arglist(_("All web files"),"1", "html:php:webimage:xml:javascript:stylesheet:jsp", NULL); main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr); arr = array_from_arglist(_("Java programming"),"1", "java:image:jsp", NULL); main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr); arr = array_from_arglist(_("Images"),"1", "image", NULL); main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr); arr = array_from_arglist(_("Hide objectfiles"),"0", "objectfile", NULL); main_v->props.filefilters = g_list_append(main_v->props.filefilters, arr); } if (main_v->props.reference_files == NULL) { gchar *userdir = g_strconcat(g_get_home_dir(), "/.bluefish/", NULL); /* if the user does not yet have any function reference files, set them to default values */ fref_rescan_dir(PKGDATADIR); fref_rescan_dir(userdir); g_free(userdir); } /* for backwards compatibility with old filetypes, before version 0.10 had length 4, before version 0.13 had length 6 */ { GList *tmplist = g_list_first(main_v->props.filetypes); while (tmplist) { gchar **orig = (gchar **)tmplist->data; if (count_array(orig)==4) { gchar **new = array_from_arglist(orig[0], orig[1], orig[2], orig[3], "1", "", "1", NULL); tmplist->data = new; g_strfreev(orig); } if (count_array(orig)==6) { gchar **new = array_from_arglist(orig[0], orig[1], orig[2], orig[3], orig[4], orig[5], "0", NULL); tmplist->data = new; if (strcmp(orig[0], "xml")==0) { new[6][0] = '1'; } else if (strcmp(orig[0], "html")==0 || strcmp(orig[0], "php")==0 || strcmp(orig[0], "jsp")==0 || strcmp(orig[0], "cfml")==0) {