GnuCash 2.4.99
gncmod-tax-us.c
00001 /*********************************************************************
00002  * gncmod-tax-us.c
00003  * module definition/initialization for us tax info
00004  *
00005  * Copyright (c) 2001 Linux Developers Group, Inc.
00006  *********************************************************************/
00007 
00008 #include "config.h"
00009 #ifdef LOCALE_SPECIFIC_TAX
00010 #include <string.h>
00011 #include <locale.h>
00012 #endif // LOCALE_SPECIFIC_TAX
00013 #include <gmodule.h>
00014 #include <libguile.h>
00015 
00016 #include "gnc-module.h"
00017 #include "gnc-module-api.h"
00018 
00019 GNC_MODULE_API_DECL(libgncmod_tax_us)
00020 
00021 /* version of the gnc module system interface we require */
00022 int libgncmod_tax_us_gnc_module_system_interface = 0;
00023 
00024 /* module versioning uses libtool semantics. */
00025 int libgncmod_tax_us_gnc_module_current  = 0;
00026 int libgncmod_tax_us_gnc_module_revision = 0;
00027 int libgncmod_tax_us_gnc_module_age      = 0;
00028 
00029 
00030 char *
00031 libgncmod_tax_us_gnc_module_path(void)
00032 {
00033 #ifdef LOCALE_SPECIFIC_TAX
00034 # ifdef G_OS_WIN32
00035     gchar *thislocale = g_win32_getlocale();
00036     gboolean is_de_DE = (strncmp(thislocale, "de_DE", 5) == 0);
00037     g_free(thislocale);
00038 # else /* !G_OS_WIN32 */
00039     const char *thislocale = setlocale(LC_ALL, NULL);
00040     gboolean is_de_DE = (strncmp(thislocale, "de_DE", 5) == 0);
00041 # endif /* G_OS_WIN32 */
00042     if (is_de_DE)
00043         return g_strdup("gnucash/tax/de_DE");
00044     else
00045         return g_strdup("gnucash/tax/us");
00046 #endif /* LOCALE_SPECIFIC_TAX */
00047     return g_strdup("gnucash/tax/us");
00048 }
00049 
00050 char *
00051 libgncmod_tax_us_gnc_module_description(void)
00052 {
00053     return g_strdup("US income tax information");
00054 }
00055 
00056 static void
00057 lmod(char * mn)
00058 {
00059     char * form = g_strdup_printf("(use-modules %s)\n", mn);
00060     scm_c_eval_string(form);
00061     g_free(form);
00062 }
00063 
00064 int
00065 libgncmod_tax_us_gnc_module_init(int refcount)
00066 {
00067     /* This is a very simple hack that loads the (new, special) German
00068        tax definition file in a German locale, or (default) loads the
00069        previous US tax file. */
00070 #ifdef LOCALE_SPECIFIC_TAX
00071 # ifdef G_OS_WIN32
00072     gchar *thislocale = g_win32_getlocale();
00073     gboolean is_de_DE = (strncmp(thislocale, "de_DE", 5) == 0);
00074     g_free(thislocale);
00075 # else /* !G_OS_WIN32 */
00076     const char *thislocale = setlocale(LC_ALL, NULL);
00077     gboolean is_de_DE = (strncmp(thislocale, "de_DE", 5) == 0);
00078 # endif /* G_OS_WIN32 */
00079     if (is_de_DE)
00080         lmod("(gnucash tax de_DE)");
00081     else
00082 #endif /* LOCALE_SPECIFIC_TAX */
00083         lmod("(gnucash tax us)");
00084     return TRUE;
00085 }
00086 
00087 int
00088 libgncmod_tax_us_gnc_module_end(int refcount)
00089 {
00090     return TRUE;
00091 }
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines