Business-KontoCheck
view release on metacpan or search on metacpan
konto_check.h view on Meta::CPAN
/* vim: ft=c:set si:set fileencoding=iso-8859-1
*/
#line 9 "konto_check_h.lx"
/*
* ##########################################################################
* # Dies ist konto_check, ein Programm zum Testen der Prüfziffern #
* # von deutschen Bankkonten. Es kann als eigenständiges Programm #
* # (z.B. mit der beigelegten main() Routine) oder als Library zur #
* # Verwendung in anderen Programmen bzw. Programmiersprachen benutzt #
* # werden. #
* # #
* # Copyright (C) 2002-2026 Michael Plugge <konto_check@yahoo.com> #
* # #
* # Dieses Programm ist freie Software; Sie dürfen es unter den #
* # Bedingungen der GNU Lesser General Public License, wie von der Free #
* # Software Foundation veröffentlicht, weiterverteilen und/oder #
* # modifizieren; entweder gemäß Version 2.1 der Lizenz oder (nach Ihrer #
* # Option) jeder späteren Version. #
* # #
* # Die GNU LGPL ist weniger infektiös als die normale GPL; Code, der von #
* # Ihnen hinzugefügt wird, unterliegt nicht der Offenlegungspflicht #
* # (wie bei der normalen GPL); außerdem müssen Programme, die diese #
* # Bibliothek benutzen, nicht (L)GPL lizensiert sein, sondern können #
* # beliebig kommerziell verwertet werden. Die Offenlegung des Sourcecodes#
* # bezieht sich bei der LGPL *nur* auf geänderten Bibliothekscode. #
* # #
* # Dieses Programm wird in der Hoffnung weiterverbreitet, daß es #
* # nützlich sein wird, jedoch OHNE IRGENDEINE GARANTIE, auch ohne die #
* # implizierte Garantie der MARKTREIFE oder der VERWENDBARKEIT FÜR #
* # EINEN BESTIMMTEN ZWECK. Mehr Details finden Sie in der GNU Lesser #
* # General Public License. #
* # #
* # Sie sollten eine Kopie der GNU Lesser General Public License #
* # zusammen mit diesem Programm erhalten haben; falls nicht, #
* # schreiben Sie an die Free Software Foundation, Inc., 59 Temple #
* # Place, Suite 330, Boston, MA 02111-1307, USA. Sie können sie auch #
* # von #
* # #
* # http://www.gnu.org/licenses/lgpl.html #
* # #
* # im Internet herunterladen. #
* # #
* ##########################################################################
*/
#ifndef KONTO_CHECK_H_INCLUDED
#define KONTO_CHECK_H_INCLUDED
/* Falls EXTRA_BLZ_REGEL auf 1 gesetzt wird, wird beim IBAN-Test
* unterschieden ob eine Regel ignoriert wurde, die nur eine BLZ ersetzt,
* oder eine andere Regel. Die Variante wenn nur eine BLZ ersetzt wird, wird
* von cKonto als richtig angesehen.
*
* Bei einer Nachfrage bei den 17 in Frage kommenden Banken bekam ich von
* zehn Banken Antworten. Von diesen sagte nur eine, daß (aktuell) die
* "alten" IBANs noch akzeptiert würden, die neun anderen sehen eine solche
* IBAN jedoch als fehlerhaft an. In konto_check wird daher das alte
* Verhalten beibehalten, solche IBANs als Fehler zu deklarieren. Wenn das
* folgende Makro auf 1 gesetzt wird, gibt es verschiedene Rückgabewerte für
* Regelverstöße mit nur BLZ-Ersetzung und andere Regeln. Auf diese Weise
* kann das Verhalten von cKonto in Benutzerprogrammen nachgebildet werden.
*/
#define EXTRA_BLZ_REGEL 1
/* Das Makro DEFAULT_ENCODING legt die Ausgabe-Kodierung für die Funktion
* kto_check_retval2txt() und die Blocks Name, Kurzname und Ort aus der
* LUT-Datei fest. Die folgenden Werte sind möglich:
*
* 1: ISO-8859-1
* 2: UTF-8
* 3: HTML Entities
* 4: DOS CP-850
*
* Werte außerhalb dieses Bereichs dürften schnell zum Absturz führen, da
* einige Arrays damit initialisiert werden.
*/
#ifndef DEFAULT_ENCODING
# define DEFAULT_ENCODING 1
#endif
#define KEEP_RAW_DATA 1
/*
* ##########################################################################
* # Fallls das folgende Makro auf 1 gesetzt wird, werden unterschiedliche #
* # Interpretationen der Prüfziffermethoden interpretiert wie in BAV #
* # (Bank Account Validator, http://sourceforge.net/projects/bav) #
* # Dieses Makro dient zum Test der beiden Pakete, damit bei den Tests #
* # nicht immer Unterschiede ausgegeben werden, wo nur (bekannte) #
* # unterschiedliche Interpretationen der Berechnungsmethoden existieren. #
* ##########################################################################
*/
#define BAV_ENABLE 0
#if BAV_ENABLE==1
#ifndef BAV_KOMPATIBEL
#define BAV_KOMPATIBEL 0
#endif
#else
#undef BAV_KOMPATIBEL
#define BAV_KOMPATIBEL 0
#endif
/*
* ##########################################################################
* # Fallls das Makro DEBUG auf 1 gesetzt wird, werden zwei- und drei- #
* # stellige Methoden (Methode + evl. Untermethode) akzeptiert, sowie noch #
* # diverser Debug-Code mit eingebaut. #
* # #
* # Das Makro VERBOSE_DEBUG wird für einige spezielle Problemfälle benutzt;#
* # falls es gesetzt ist, wird im Fehlerfall mittels perror() eine etwas #
* # detailliertere Fehlermeldung ausgegeben (im Moment nur bei fopen()). #
konto_check.h view on Meta::CPAN
DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base);
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base);
DLL_EXPORT int lut_suche_multiple(char *such_worte,int uniq,char *such_cmd,UINT4 *anzahl,UINT4 **zweigstellen,UINT4 **blz);
DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_o,int uniq);
DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl_o,int **blz_op,int **zweigstellen_op,int **cnt_o,int uniq);
DLL_EXPORT int lut_suche_init(int uniq);
DLL_EXPORT int lut_suche_free(int id);
DLL_EXPORT int lut_suche_set(int such_id,int idx,int typ,int i1,int i2,char *txt);
DLL_EXPORT int lut_suche(int such_id,char *such_cmd,UINT4 *such_cnt,UINT4 **filiale,UINT4 **blz);
DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char **lut_blocks_fehler);
DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *lut_blocks_fehler);
/* (Benutzerdefinierte) Default-Werte in der LUT-Datei lesen und schreiben */
#define DEFAULT_CNT 50 /* Anzahl Einträge (fest) */
DLL_EXPORT int kto_check_init_default(char *lut_name,int block_id);
DLL_EXPORT int kto_check_default_keys(char ***keys,int *cnt);
DLL_EXPORT int kto_check_set_default(char *key,char *val);
DLL_EXPORT int kto_check_set_default_bin(char *key,char *val,int size);
DLL_EXPORT int kto_check_get_default(char *key,char **val,int *size);
DLL_EXPORT int kto_check_write_default(char *lutfile,int block_id);
/* Aufräumarbeiten */
DLL_EXPORT int lut_cleanup(void);
/* IBAN-Sachen */
DLL_EXPORT int ci_check(char *ci);
DLL_EXPORT int bic_check(char *search_bic,int *cnt);
DLL_EXPORT int iban_check(char *iban,int *retval);
DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto);
DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto);
DLL_EXPORT char *iban_gen(char *kto,char *blz,int *retval);
DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,char *kto2,int *retval);
DLL_EXPORT char *iban_bic_gen1(char *blz,char *kto,const char **bicp,int *retval);
DLL_EXPORT int ipi_gen(char *zweck,char *dst,char *papier);
DLL_EXPORT int iban_gen_id(char *blz,char *kto,int *retval);
DLL_EXPORT int ipi_gen_id(char *zweck,int *dst,int *papier);
DLL_EXPORT int iban_bic_gen_id(char *blz,char *kto,int *bic2,int *blz2,int *kto2,int *retval);
DLL_EXPORT int ipi_check(char *zweck);
/* BIC-Funktionen */
DLL_EXPORT int bic_info(char *bic_name,int mode,int *anzahl,int *start_idx);
/* Rückgabewerte in Klartext umwandeln */
DLL_EXPORT int kto_check_encoding(int mode);
DLL_EXPORT int keep_raw_data(int mode);
DLL_EXPORT const char *kto_check_encoding_str(int mode);
DLL_EXPORT const char *kto_check_retval2txt(int retval);
DLL_EXPORT const char *kto_check_retval2iso(int retval);
DLL_EXPORT const char *kto_check_retval2txt_short(int retval);
DLL_EXPORT const char *kto_check_retval2html(int retval);
DLL_EXPORT const char *kto_check_retval2utf8(int retval);
DLL_EXPORT const char *kto_check_retval2dos(int retval);
/* Prüfziffer (numerisch) in String umwandeln */
const DLL_EXPORT char *pz2str(int pz,int *ret);
/* Flag für neue Prüfziffermethoden setzen bzw. abfragen */
DLL_EXPORT int pz_aenderungen_enable(int set);
/* Funktionen für Strings mit Rückgabe per handle */
DLL_EXPORT char *kc_id2ptr(int handle,int *retval);
DLL_EXPORT int kc_id_free(int handle);
/* Handle-Varianten für Funktionen mit Stringkonstanten als Rückgabewert */
DLL_EXPORT int kto_check_encoding_str_id(int mode);
DLL_EXPORT int kto_check_retval2txt_id(int retval);
DLL_EXPORT int kto_check_retval2txt_short_id(int retval);
DLL_EXPORT int kto_check_retval2html_id(int retval);
DLL_EXPORT int kto_check_retval2dos_id(int retval);
DLL_EXPORT int kto_check_retval2utf8_id(int retval);
DLL_EXPORT int get_kto_check_version_id(int mode);
DLL_EXPORT int lut_name_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_kurz_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_name_kurz_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_ort_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_ort_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_i_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_h_id(char *b,int zweigstelle,int *retval);
DLL_EXPORT int lut_bic_hi_id(int b,int zweigstelle,int *retval);
DLL_EXPORT int bic_bic_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_bic_h_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_name_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_name_kurz_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int bic_ort_id(char *bic_name,int mode,int filiale,int*retval);
DLL_EXPORT int biq_bic_id(int idx,int*retval);
DLL_EXPORT int biq_bic_h_id(int idx,int*retval);
DLL_EXPORT int biq_name_id(int idx,int*retval);
DLL_EXPORT int biq_name_kurz_id(int idx,int*retval);
DLL_EXPORT int biq_ort_id(int idx,int*retval);
DLL_EXPORT int iban_bic_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_bic_h_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_name_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_name_kurz_id(char *iban,int filiale,int*retval);
DLL_EXPORT int iban_ort_id(char *iban,int filiale,int*retval);
/* Funktionen für das SCL-Verzeichnis */
DLL_EXPORT int lut_scl_init(char *lut_name);
DLL_EXPORT int lut_scl_info(char *lutfile,int *cnt,const char **gueltigkeit,const char **gueltigkeit_iso);
DLL_EXPORT int lut_write_scl_blocks(char *inputfile,char *lutfile);
DLL_EXPORT int lut_scl_multi(char *bic,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_multi_blz(char *blz,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_multi_blz_i(int blz,const char **scl_flags,const char **used_bic,const char **scl_name);
DLL_EXPORT int lut_scl_sct(char *bic,int *retval);
DLL_EXPORT int lut_scl_sdd(char *bic,int *retval);
DLL_EXPORT int lut_scl_cor1(char *bic,int *retval);
DLL_EXPORT int lut_scl_b2b(char *bic,int *retval);
DLL_EXPORT int lut_scl_scc(char *bic,int *retval);
DLL_EXPORT int lut_scl_sct_blz(char *blz,int *retval,const char **used_bic);
DLL_EXPORT int lut_scl_sdd_blz(char *blz,int *retval,const char **used_bic);
DLL_EXPORT int lut_scl_cor1_blz(char *blz,int *retval,const char **used_bic);
( run in 2.880 seconds using v1.01-cache-2.11-cpan-b16cb0d3907 )