diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-07-27 19:13:28 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2008-07-27 19:13:28 +0200 |
| commit | 510fff156db65795cbf211e7910a67fb316cb404 (patch) | |
| tree | dfbec486ffeab2d6886f9f51863f723a2d5cd574 /cgg.c | |
| download | cataract-510fff156db65795cbf211e7910a67fb316cb404.tar.xz | |
Initial commitv0.99.0
Diffstat (limited to 'cgg.c')
| -rw-r--r-- | cgg.c | 156 |
1 files changed, 156 insertions, 0 deletions
@@ -0,0 +1,156 @@ +/* Cataract - Static web photo gallery generator + * Copyright (C) 2008 Tomas Bzatek <tbzatek@users.sourceforge.net> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <stdint.h> +#include <unistd.h> + +#include <glib.h> + +#include <libxml/xmlmemory.h> + +#include "config.h" +#include "setup.h" +#include "generators.h" + + + + +#define APP_VERSION "0.99.0" +#define APP_BUILD_DATE "2008-07-27" + + + +/* + * parse_cmd: parse commandline and fill global variable parameters + */ +gboolean +parse_cmd (int argc, char* argv[], char **source_dir, char **dst_dir, gboolean *verbose) +{ + static gboolean _verbose = FALSE; + static gchar *_source_dir = NULL; + static gchar *_dst_dir = NULL; + + static GOptionEntry entries[] = + { + { "verbose", 'v', 0, G_OPTION_ARG_NONE, &_verbose, "Be verbose", NULL }, + { "source", 's', 0, G_OPTION_ARG_STRING, &_source_dir, "Specifies path to source structure", NULL }, + { "output", 'o', 0, G_OPTION_ARG_STRING, &_dst_dir, "Generate files to the specified directory instead of current", NULL }, + { NULL } + }; + + GError *error = NULL; + GOptionContext *context; + char *s1; + + g_set_prgname ("cgg"); + + context = g_option_context_new ("- web gallery generator"); + s1 = g_strdup_printf ("cgg v%s [%s] Copyright (c) 2008 Tomas Bzatek", APP_VERSION, APP_BUILD_DATE); + g_option_context_set_summary (context, s1); + g_free (s1); + g_option_context_add_main_entries (context, entries, NULL); + + if (argc == 1) { + s1 = g_option_context_get_help (context, TRUE, NULL); + g_print (s1); + g_free (s1); + g_option_context_free (context); + return FALSE; + } + + if (! g_option_context_parse (context, &argc, &argv, &error)) { + g_print ("option parsing failed: %s\n", error->message); + s1 = g_option_context_get_help (context, TRUE, NULL); + g_print (s1); + g_free (s1); + g_option_context_free (context); + return FALSE; + } + g_option_context_free (context); + + *source_dir = _source_dir; + *dst_dir = _dst_dir; + *verbose = _verbose; + + return TRUE; +} + + + +int +main(int argc, char* argv[]) +{ + char *source_dir; + char *dst_dir; + gboolean verbose; + TGallerySetup *setup; + + /* + * this initialize the library and check potential ABI mismatches + * between the version it was compiled for and the actual shared + * library used. + */ + LIBXML_TEST_VERSION; + + source_dir = NULL; + dst_dir = NULL; + setup = malloc(sizeof(TGallerySetup)); + + + /* Parse commandline */ + if (! parse_cmd (argc, argv, &source_dir, &dst_dir, &verbose)) + return -1; + + if ((! source_dir) || (access (source_dir, R_OK))) { + fprintf (stderr, "error: source directory must be specified and pointing to valid structure\n"); + return -4; + } + if (! dst_dir) { + fprintf (stderr, "error: target directory must be specified\n"); + return -5; + } + + /* Read gallery settings */ + if (! find_setup_xml (setup)) { + fprintf (stderr, "error: could not parse gallery settings file\n"); + return -2; + } + + setup->real_templates_dir = find_templates_directory (setup); + if (setup->real_templates_dir == NULL) { + fprintf (stderr, "error: could not determine templates directory\n"); + return -3; + } + + + /* Start building the gallery tree */ + setup->verbose = verbose; + build_tree (setup, source_dir, dst_dir, NULL); + + + /* Cleanup function for the XML library. */ + xmlCleanupParser(); + + free (source_dir); + free (dst_dir); + free_setup_data (setup); + + return (0); +} |
