rem: if (opt_verbose) g_printerr("Processing \"%s\"...\n", real_path);
add: log_info("Processing \"%s\"...", real_path);
context: directory_proc(const gchar *real_path, const gchar *dir_name){    xmlNodePtr dir_node;    GDir *dir;    gchar *dir_name_utf8;    /* create directory node */    dir_node = xmlNewNode(NULL, "directory");    dir_name_utf8 = g_filename_to_utf8(dir_name, -1, NULL, NULL, NULL);    xmlNewProp(dir_node, "name", dir_name_utf8);    /* open directory */    dir = g_dir_open(real_path, 0, NULL);    if (dir != NULL) {                  /* g_dir_open() succeeded */        const gchar *entry;        if (opt_verbose)            g_printerr("Processing \"%s\"...\n", real_path);        /* visit each directory entry */        while ((entry = g_dir_read_name(dir)) != NULL) {            gchar *full_name = g_build_filename(real_path, entry, NULL);            if (g_file_test(full_name, G_FILE_TEST_IS_DIR)) {                xmlNodePtr subdir_node = directory_proc(full_name, entry);                if (subdir_node != NULL)                    xmlAddChild(dir_node, subdir_node);            }            else if (g_file_test(full_name, G_FILE_TEST_IS_REGULAR)) {                xmlNodePtr file_node = file_proc(full_name, entry);                if (file_node != NULL)                    xmlAddChild(dir_node, file_node);            }            g_free(full_name);        }        g_dir_close(dir);    }    else {                              /* g_dir_open() returned NULL */        xmlNodePtr comment = xmlNewComment("error opening directory");        xmlAddChild(dir_node, comment);        g_warning("%s: %s", real_path, g_strerror(errno));    }    g_free(dir_name_utf8);              /* free UTF-8 converted filename */    return dir_node;}