|
GnuCash 2.4.99
|
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 }
1.7.4