konto_check 5.4.0 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ext/konto_check_raw/konto_check.c +543 -97
- data/ext/konto_check_raw/konto_check.h +53 -3
- data/ext/konto_check_raw/konto_check_raw_ruby.c +333 -193
- data/ext/konto_check_raw/retvals.h +5 -5
- data/lib/konto_check.rb +80 -0
- metadata +2 -2
@@ -45,13 +45,12 @@
|
|
45
45
|
* # im Internet herunterladen. #
|
46
46
|
* ##########################################################################
|
47
47
|
*/
|
48
|
-
#line 314 "konto_check.lxx"
|
49
48
|
|
50
49
|
/* Definitionen und Includes */
|
51
50
|
#ifndef VERSION
|
52
|
-
#define VERSION "5.
|
51
|
+
#define VERSION "5.5 (final)"
|
53
52
|
#endif
|
54
|
-
#define VERSION_DATE "2014-
|
53
|
+
#define VERSION_DATE "2014-09-01"
|
55
54
|
|
56
55
|
#ifndef INCLUDE_KONTO_CHECK_DE
|
57
56
|
#define INCLUDE_KONTO_CHECK_DE 1
|
@@ -240,7 +239,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
240
239
|
#define free(ptr) efree(ptr)
|
241
240
|
#endif
|
242
241
|
|
243
|
-
#line 750 "konto_check.lxx"
|
244
242
|
|
245
243
|
/* Testwert zur Markierung ung�ltiger Ziffern im BLZ-String (>8 Stellen) */
|
246
244
|
#define BLZ_FEHLER 100000000
|
@@ -376,7 +374,6 @@ static int convert_encoding(char **data,UINT4 *len);
|
|
376
374
|
*/
|
377
375
|
#define CHECK_RETVAL(fkt) do{if((retval=fkt)!=OK)goto fini;}while(0) /* es mu� noch aufger�umt werden, daher goto */
|
378
376
|
#define CHECK_RETURN(fkt) do{if((retval=fkt)!=OK)return retval;}while(0)
|
379
|
-
#line 891 "konto_check.lxx"
|
380
377
|
|
381
378
|
/* einige Makros zur Umwandlung zwischen unsigned int und char */
|
382
379
|
#define UCP (unsigned char*)
|
@@ -496,7 +493,6 @@ int pz=-777;
|
|
496
493
|
|
497
494
|
#define E_START(x)
|
498
495
|
#define E_END(x)
|
499
|
-
#line 1016 "konto_check.lxx"
|
500
496
|
|
501
497
|
/* Variable f�r die Methoden 27, 29 und 69 */
|
502
498
|
static const int m10h_digits[4][10]={
|
@@ -562,8 +558,6 @@ static char uk_pz_methoden[256];
|
|
562
558
|
static char **qs_zeilen,*qs_hauptstelle;
|
563
559
|
static int *qs_blz,*qs_plz,*qs_sortidx,*qs_iban_regel;
|
564
560
|
|
565
|
-
#line 1090 "konto_check.lxx"
|
566
|
-
|
567
561
|
static unsigned char ee[500],*eeh,*eep,eec[]={
|
568
562
|
0x78,0xda,0x75,0x8f,0xc1,0x0d,0xc2,0x30,0x0c,0x45,0x39,0x7b,0x0a,
|
569
563
|
0x4f,0xc0,0x04,0x55,0x4f,0x08,0xae,0x48,0x4c,0x90,0x36,0x6e,0x12,
|
@@ -635,6 +629,16 @@ static const int w52[] = { 2, 4, 8, 5,10, 9, 7, 3, 6, 1, 2, 4, 0, 0, 0, 0},
|
|
635
629
|
w24[]={ 1, 2, 3, 1, 2, 3, 1, 2, 3 },
|
636
630
|
w93[]= { 2, 3, 4, 5, 6, 7, 2, 3, 4 };
|
637
631
|
|
632
|
+
/* Array mit Pointern f�r die Windows-DLL. So k�nnen Pointer als id
|
633
|
+
* �bergeben und sp�ter wieder freigegeben werden, und man mu� nicht den
|
634
|
+
* (etwas unsch�nen) Weg �ber IntPtr w�hlen.
|
635
|
+
*/
|
636
|
+
static int h_cnt;
|
637
|
+
static char **handle_ptr;
|
638
|
+
static int *handle_free;
|
639
|
+
|
640
|
+
static int kc_ptr2id(char *ptr,int *handle,int release_mem);
|
641
|
+
|
638
642
|
/* Prototypen der static Funktionen +���2 */
|
639
643
|
/*
|
640
644
|
* ######################################################################
|
@@ -677,16 +681,16 @@ static int qcmp_ort(const void *ap,const void *bp);
|
|
677
681
|
static int qcmp_sortc(const void *ap,const void *bp);
|
678
682
|
static int qcmp_sorti(const void *ap,const void *bp);
|
679
683
|
static int iban_init(void);
|
680
|
-
static int iban_regel_cvt(char *blz,char *kto,const char **bic,int regel_version);
|
684
|
+
static int iban_regel_cvt(char *blz,char *kto,const char **bic,int regel_version,RETVAL *retvals);
|
681
685
|
static const char *lut_bic_int(char *b,int zweigstelle,int *retval);
|
682
|
-
static int bic_fkt_c(char *bic1,int mode,int filiale,int*retval,char *base,int error);
|
683
|
-
static int biq_fkt_c(int idx,int*retval,char *base,int error);
|
686
|
+
static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error);
|
687
|
+
static int biq_fkt_c(int idx,int *retval,char *base,int error);
|
684
688
|
static int iban_fkt_c(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*));
|
685
|
-
static int bic_fkt_i(char *bic1,int mode,int filiale,int*retval,int *base,int error);
|
686
|
-
static int biq_fkt_i(int idx,int*retval,int *base,int error);
|
689
|
+
static int bic_fkt_i(char *bic1,int mode,int filiale,int *retval,int *base,int error);
|
690
|
+
static int biq_fkt_i(int idx,int *retval,int *base,int error);
|
687
691
|
static int iban_fkt_i(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int*));
|
688
|
-
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int*retval,char **base,int error);
|
689
|
-
static const char *biq_fkt_s(int idx,int*retval,char **base,int error);
|
692
|
+
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int *retval,char **base,int error);
|
693
|
+
static const char *biq_fkt_s(int idx,int *retval,char **base,int error);
|
690
694
|
static const char *iban_fkt_s(char *iban,int filiale,int *retval,const char*(*fkt)(char*,int,int*));
|
691
695
|
#if DEBUG>0
|
692
696
|
static int kto_check_int(char *x_blz,int pz_methode,char *kto,int untermethode,RETVAL *retvals);
|
@@ -938,7 +942,6 @@ static int create_lutfile_int(char *name, char *prolog, int slots,FILE **lut)
|
|
938
942
|
* ###########################################################################
|
939
943
|
*/
|
940
944
|
|
941
|
-
#line 1466 "konto_check.lxx"
|
942
945
|
DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
943
946
|
{
|
944
947
|
char buffer[SLOT_BUFFER],*ptr;
|
@@ -976,7 +979,6 @@ DLL_EXPORT int write_lut_block(char *lutname,UINT4 typ,UINT4 len,char *data)
|
|
976
979
|
* #############################################################################
|
977
980
|
*/
|
978
981
|
|
979
|
-
#line 1504 "konto_check.lxx"
|
980
982
|
static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
981
983
|
{
|
982
984
|
char buffer[SLOT_BUFFER],*ptr,*cptr;
|
@@ -1112,7 +1114,6 @@ static int write_lut_block_int(FILE *lut,UINT4 typ,UINT4 len,char *data)
|
|
1112
1114
|
* ###########################################################################
|
1113
1115
|
*/
|
1114
1116
|
|
1115
|
-
#line 1640 "konto_check.lxx"
|
1116
1117
|
DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **data)
|
1117
1118
|
{
|
1118
1119
|
int retval;
|
@@ -1135,7 +1136,6 @@ DLL_EXPORT int read_lut_block(char *lutname, UINT4 typ,UINT4 *blocklen,char **da
|
|
1135
1136
|
* ###########################################################################
|
1136
1137
|
*/
|
1137
1138
|
|
1138
|
-
#line 1664 "konto_check.lxx"
|
1139
1139
|
DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
1140
1140
|
{
|
1141
1141
|
int retval;
|
@@ -1157,7 +1157,6 @@ DLL_EXPORT int read_lut_slot(char *lutname,int slot,UINT4 *blocklen,char **data)
|
|
1157
1157
|
* ###########################################################################
|
1158
1158
|
*/
|
1159
1159
|
|
1160
|
-
#line 1687 "konto_check.lxx"
|
1161
1160
|
static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **data)
|
1162
1161
|
{
|
1163
1162
|
char buffer[SLOT_BUFFER],*ptr,*sbuffer,*dbuffer;
|
@@ -1247,7 +1246,6 @@ static int read_lut_block_int(FILE *lut,int slot,int typ,UINT4 *blocklen,char **
|
|
1247
1246
|
FREE(sbuffer);
|
1248
1247
|
RETURN(ERROR_MALLOC);
|
1249
1248
|
}
|
1250
|
-
#line 1792 "konto_check.lxx"
|
1251
1249
|
|
1252
1250
|
if(fread(sbuffer,1,compressed_len,lut)<compressed_len){
|
1253
1251
|
FREE(sbuffer);
|
@@ -2615,6 +2613,21 @@ DLL_EXPORT int lut_dir_dump(char *lutname,char *outputname)
|
|
2615
2613
|
return OK;
|
2616
2614
|
}
|
2617
2615
|
|
2616
|
+
DLL_EXPORT int lut_dir_dump_id(char *lutname,int *rv)
|
2617
|
+
{
|
2618
|
+
char *ptr;
|
2619
|
+
int retval,id;
|
2620
|
+
|
2621
|
+
if((retval=lut_dir_dump_str(lutname,&ptr))<OK){
|
2622
|
+
if(ptr)free(ptr);
|
2623
|
+
if(rv)*rv=retval;
|
2624
|
+
return -1;
|
2625
|
+
}
|
2626
|
+
if((retval=kc_ptr2id(ptr,&id,1))<0)free(ptr);
|
2627
|
+
if(rv)*rv=retval;
|
2628
|
+
return id;
|
2629
|
+
}
|
2630
|
+
|
2618
2631
|
DLL_EXPORT int lut_dir_dump_str(char *lutname,char **dptr)
|
2619
2632
|
{
|
2620
2633
|
char *ptr;
|
@@ -2742,7 +2755,46 @@ DLL_EXPORT int lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,i
|
|
2742
2755
|
}
|
2743
2756
|
else
|
2744
2757
|
**info2=0;
|
2745
|
-
|
2758
|
+
return retval;
|
2759
|
+
}
|
2760
|
+
|
2761
|
+
|
2762
|
+
/* Funktion lut_info_id() +���1 */
|
2763
|
+
/* ###########################################################################
|
2764
|
+
* # Die Funktion lut_info_id() ist �hnlich wie lut_info_b(). F�r die #
|
2765
|
+
* # Parameter info1 und info2 wird jedoch ein Handle zur�ckgegeben, das #
|
2766
|
+
* # mittels der Funktion kc_id2ptr() in einen String umgewandelt, sowie mit #
|
2767
|
+
* # der Funktion kc_id_free() wieder freigegeben werden kann. #
|
2768
|
+
* # #
|
2769
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
2770
|
+
* ###########################################################################
|
2771
|
+
*/
|
2772
|
+
|
2773
|
+
DLL_EXPORT int lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int *valid2)
|
2774
|
+
{
|
2775
|
+
char *i1,*i2;
|
2776
|
+
int retval,rv;
|
2777
|
+
|
2778
|
+
retval=lut_info(lut_name,&i1,&i2,valid1,valid2);
|
2779
|
+
if(i1){
|
2780
|
+
if((rv=kc_ptr2id(i1,info1,1))<0){
|
2781
|
+
FREE(i1);
|
2782
|
+
FREE(i2);
|
2783
|
+
return rv;
|
2784
|
+
}
|
2785
|
+
}
|
2786
|
+
else
|
2787
|
+
*info1=-1;
|
2788
|
+
if(i2){
|
2789
|
+
if((rv=kc_ptr2id(i2,info2,1))<0){
|
2790
|
+
FREE(i1);
|
2791
|
+
FREE(i2);
|
2792
|
+
return rv;
|
2793
|
+
}
|
2794
|
+
}
|
2795
|
+
else
|
2796
|
+
*info2=-1;
|
2797
|
+
return retval;
|
2746
2798
|
}
|
2747
2799
|
|
2748
2800
|
|
@@ -2786,7 +2838,6 @@ DLL_EXPORT int lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,i
|
|
2786
2838
|
* ###########################################################################
|
2787
2839
|
*/
|
2788
2840
|
|
2789
|
-
#line 3331 "konto_check.lxx"
|
2790
2841
|
DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)
|
2791
2842
|
{
|
2792
2843
|
char *ptr,*ptr1,buffer[128];
|
@@ -2874,7 +2925,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2874
2925
|
|
2875
2926
|
/* Infoblocks lesen: 1. Infoblock */
|
2876
2927
|
if((ret=read_lut_block_int(in,0,LUT2_INFO,&cnt,&ptr))==OK){
|
2877
|
-
#line 3420 "konto_check.lxx"
|
2878
2928
|
*(ptr+cnt)=0;
|
2879
2929
|
if(valid1){
|
2880
2930
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -2922,7 +2972,6 @@ DLL_EXPORT int lut_info(char *lut_name,char **info1,char **info2,int *valid1,int
|
|
2922
2972
|
|
2923
2973
|
/* Infoblocks lesen: 2. Infoblock */
|
2924
2974
|
if((ret=read_lut_block_int(in,0,LUT2_2_INFO,&cnt,&ptr))==OK){
|
2925
|
-
#line 3469 "konto_check.lxx"
|
2926
2975
|
*(ptr+cnt)=0;
|
2927
2976
|
if(valid2){
|
2928
2977
|
for(ptr1=ptr,v1=v2=0;*ptr1 && *ptr1!='\n' && !isdigit(*ptr1);ptr1++);
|
@@ -3141,11 +3190,11 @@ DLL_EXPORT int copy_lutfile(char *old_name,char *new_name,int new_slots)
|
|
3141
3190
|
qsort(slotdir,slot_cnt,sizeof(int),cmp_int);
|
3142
3191
|
for(last_slot=-1,i=0;i<(int)slot_cnt;i++)if((typ=slotdir[i]) && typ!=(UINT4)last_slot){
|
3143
3192
|
read_lut_block_int(lut1,0,typ,&len,&data);
|
3144
|
-
#line 3689 "konto_check.lxx"
|
3145
3193
|
write_lut_block_int(lut2,typ,len,data);
|
3146
3194
|
FREE(data);
|
3147
3195
|
last_slot=typ;
|
3148
3196
|
}
|
3197
|
+
fclose(lut1);
|
3149
3198
|
fclose(lut2);
|
3150
3199
|
return OK;
|
3151
3200
|
}
|
@@ -3370,7 +3419,6 @@ DLL_EXPORT int lut_init(char *lut_name,int required,int set)
|
|
3370
3419
|
* # Copyright (C) 2008 Michael Plugge <m.plugge@hs-mannheim.de> #
|
3371
3420
|
* ###########################################################################
|
3372
3421
|
*/
|
3373
|
-
#line 3918 "konto_check.lxx"
|
3374
3422
|
DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)
|
3375
3423
|
{
|
3376
3424
|
char *ptr,*dptr,*data,*eptr,*prolog,*info,*user_info,*hs=NULL,*info1,*info2,*ci=NULL,name_buffer[LUT_PATH_LEN];
|
@@ -3598,7 +3646,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3598
3646
|
typ1=typ;
|
3599
3647
|
if(lut2_block_status[typ]==OK)continue; /* jeden Block nur einmal einlesen */
|
3600
3648
|
retval=read_lut_block_int(lut,0,typ,&len,&data);
|
3601
|
-
#line 4147 "konto_check.lxx"
|
3602
3649
|
|
3603
3650
|
switch(retval){
|
3604
3651
|
case LUT_CRC_ERROR:
|
@@ -3686,7 +3733,6 @@ DLL_EXPORT int kto_check_init(char *lut_name,int *required,int **status,int set,
|
|
3686
3733
|
if(typ==LUT2_2_NAME || typ==LUT2_2_NAME_KURZ){
|
3687
3734
|
FREE(data);
|
3688
3735
|
i=read_lut_block_int(lut,0,LUT2_2_NAME_NAME_KURZ,&len,&data);
|
3689
|
-
#line 4239 "konto_check.lxx"
|
3690
3736
|
if(i==OK){ /* was gefunden; Typ �ndern, dann weiter wie bei OK */
|
3691
3737
|
typ=LUT2_2_NAME_NAME_KURZ;
|
3692
3738
|
typ1=LUT2_NAME_NAME_KURZ;
|
@@ -4232,6 +4278,45 @@ DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char
|
|
4232
4278
|
return OK;
|
4233
4279
|
}
|
4234
4280
|
|
4281
|
+
|
4282
|
+
/* Funktion lut_blocks_id() +���1 */
|
4283
|
+
/* ############################################################################
|
4284
|
+
* # Die Funktion lut_blocks_id() entspricht der Funktion lut_blocks(); die #
|
4285
|
+
* # R�ckgabe erfolgt jedoch per Handle. Die Funktion ist vor allem f�r die #
|
4286
|
+
* # Windows-DLL gedacht, da der angeforderte Speicher wieder freigegeben #
|
4287
|
+
* # werden mu�. R�ckgabewerte und Parameter s.o. Die Parameter lut_blocks_ok #
|
4288
|
+
* # und lut_blocks_fehler k�nnen mit der Funktion kc_id2ptr() in einen #
|
4289
|
+
* # String umgewandelt werden; mittels kc_id_free() kann der allokierte #
|
4290
|
+
* # Speicher wieder freigegeben werden. #
|
4291
|
+
* # #
|
4292
|
+
* # Diese Funktion unterst�tzt keine optionalen Parameter, d.h. die drei #
|
4293
|
+
* # Variablen lut_filename, lut_blocks_ok und lut_blocks_fehler m�ssen immer #
|
4294
|
+
* # angegeben werden; eine �bergabe von NULL f�hrt zu einer access violation.#
|
4295
|
+
* # #
|
4296
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
4297
|
+
* ############################################################################
|
4298
|
+
*/
|
4299
|
+
DLL_EXPORT int lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *lut_blocks_fehler)
|
4300
|
+
{
|
4301
|
+
char *lut_filename_p,*lut_blocks_ok_p,*lut_blocks_fehler_p;
|
4302
|
+
int retval,rv;
|
4303
|
+
|
4304
|
+
retval=lut_blocks(mode,&lut_filename_p,&lut_blocks_ok_p,&lut_blocks_fehler_p);
|
4305
|
+
|
4306
|
+
/* alle drei retvals in einem if() in Handles umwandeln; es können nur
|
4307
|
+
* malloc Fehler vorkommen, dann ist doch alles zu spät... daher keine
|
4308
|
+
* weitere Unterscheidung hier.
|
4309
|
+
*/
|
4310
|
+
if((rv=kc_ptr2id(lut_filename_p,lut_filename,1)<0) || (rv=kc_ptr2id(lut_blocks_ok_p,lut_blocks_ok,1)<0)
|
4311
|
+
|| (rv=kc_ptr2id(lut_blocks_fehler_p,lut_blocks_fehler,1)<0)){
|
4312
|
+
FREE(lut_filename_p);
|
4313
|
+
FREE(lut_blocks_ok_p);
|
4314
|
+
FREE(lut_blocks_fehler_p);
|
4315
|
+
return rv;
|
4316
|
+
}
|
4317
|
+
return retval;
|
4318
|
+
}
|
4319
|
+
|
4235
4320
|
/* Funktion current_lutfile_name() +���1 */
|
4236
4321
|
/* ###########################################################################
|
4237
4322
|
* # current_lutfile_name(): Name, benutztes Set und Init-Level der aktuellen#
|
@@ -4243,7 +4328,6 @@ DLL_EXPORT int lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char
|
|
4243
4328
|
* ###########################################################################
|
4244
4329
|
*/
|
4245
4330
|
|
4246
|
-
#line 4796 "konto_check.lxx"
|
4247
4331
|
DLL_EXPORT const char *current_lutfile_name(int *set,int *level,int *retval)
|
4248
4332
|
{
|
4249
4333
|
if(init_status<7 || !current_lutfile){
|
@@ -4660,7 +4744,7 @@ DLL_EXPORT const char *lut_bic(char *b,int zweigstelle,int *retval)
|
|
4660
4744
|
else{
|
4661
4745
|
strcpy(blz2,b);
|
4662
4746
|
strcpy(kto2,"13"); /* nur Dummy f�r Funktionsaufruf */
|
4663
|
-
iban_regel_cvt(blz2,kto2,&bic_neu,regel); /* R�ckgabewert egal, nur bic_neu interessiert */
|
4747
|
+
iban_regel_cvt(blz2,kto2,&bic_neu,regel,NULL); /* R�ckgabewert egal, nur bic_neu interessiert */
|
4664
4748
|
if(bic && bic_neu && strcasecmp(bic,bic_neu))*retval=OK_INVALID_FOR_IBAN; /* BIC wurde durch eine Regel ge�ndert */
|
4665
4749
|
}
|
4666
4750
|
}
|
@@ -5019,12 +5103,11 @@ static int iban_init(void)
|
|
5019
5103
|
* ###########################################################################
|
5020
5104
|
*/
|
5021
5105
|
|
5022
|
-
#line 5572 "konto_check.lxx"
|
5023
5106
|
#if USE_IBAN_RULES
|
5024
|
-
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version)
|
5107
|
+
static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_version,RETVAL *retvals)
|
5025
5108
|
{
|
5026
5109
|
char tmp_buffer[16];
|
5027
|
-
int regel,version,b,b_alt,b_neu,k1,k2,k3,not_ok,i,ret,loesch,idx,pz_methode,uk_cnt;
|
5110
|
+
int regel,version,b,b_alt,b_neu,k1,k2,k3,not_ok,i,ret,loesch,idx,pz_methode,uk_cnt,tmp;
|
5028
5111
|
|
5029
5112
|
/* pr�fen, ob bereits initialisiert wurde */
|
5030
5113
|
INITIALIZE_WAIT;
|
@@ -5898,13 +5981,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5898
5981
|
*/
|
5899
5982
|
case 20:
|
5900
5983
|
|
5901
|
-
/* die neue Version der Regel 20 wird zum 9. Dezember in den offiziellen IBAN-Regeln ver�ffentlicht;
|
5902
|
-
* die Bundesbank hat jedoch schon die Regelversion am 28. August ver�ffentlicht, mit der Bitte, sie
|
5903
|
-
* m�glichst schon zum 9. September einzusetzen. Der Best Guess Ansatz mit dem Fehlercode 51 bzw.
|
5904
|
-
* IBAN_AMBIGUOUS_KTO wird entfernt und durch Verfahren zur Ermittlung eindeutiger IBANs ersetzt.
|
5905
|
-
* Die alte Version ist jetzt (9.12.13) nicht mehr im Code enthalten, da sie ung�ltig ist.
|
5906
|
-
*/
|
5907
|
-
|
5908
5984
|
/* BLZ ohne IBAN-Berechnung */
|
5909
5985
|
if(b==10020000)return NO_IBAN_CALCULATION;
|
5910
5986
|
|
@@ -5926,6 +6002,11 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5926
6002
|
* die IBAN-Berechnung nicht zugelassen.
|
5927
6003
|
*/
|
5928
6004
|
if(pz_methode==127 && kto_check_pz("c7a",kto,NULL)<OK && kto_check_pz("c7c",kto,NULL)<OK){
|
6005
|
+
if(retvals){
|
6006
|
+
/* in retvals noch Werte f�r den Fehlerfall eintragen */
|
6007
|
+
retvals->methode="c7b";
|
6008
|
+
retvals->pz_methode=2127;
|
6009
|
+
}
|
5929
6010
|
if((ret=kto_check_pz("c7b",kto,NULL))==OK)
|
5930
6011
|
return NO_IBAN_CALCULATION;
|
5931
6012
|
else
|
@@ -5935,7 +6016,11 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5935
6016
|
/* 10-stellige Konten sind ung�ltig */
|
5936
6017
|
if(*kto!='0')return INVALID_KTO;
|
5937
6018
|
|
5938
|
-
|
6019
|
+
/* jetzt kommt nur noch das Pr�fzifferverfahren 63 (Deutsche Bank) */
|
6020
|
+
if(retvals){
|
6021
|
+
retvals->methode="63";
|
6022
|
+
retvals->pz_methode=63;
|
6023
|
+
}
|
5939
6024
|
|
5940
6025
|
if(k1==0){ /* erstmal maximal 7-stellige Konten */
|
5941
6026
|
/* 1-4 stellige Konten sind generell nicht zugelassen */
|
@@ -5948,13 +6033,32 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
5948
6033
|
* nur Pr�fzifferverfahren 63a ist g�ltig).
|
5949
6034
|
*/
|
5950
6035
|
if(k2<1000000){
|
6036
|
+
/* zun�chst einmal testen, ob das Konto mit Methode 63a
|
6037
|
+
* g�ltig ist, um den R�ckgabewert im Fehlerfall bei Methode
|
6038
|
+
* 63b zu setzen. Falls 63a g�ltig ist, wird dann
|
6039
|
+
* NO_IBAN_CALCULATION zur�ckgegeben.
|
6040
|
+
*
|
6041
|
+
* Falls hier nicht differenziert wird, w�rde beim normalen
|
6042
|
+
* Kontentest OK zur�ckgegeben, beim Kontentest mit
|
6043
|
+
* IBAN-Regeln jedoch FALSE, was etwas verwirrend ist.
|
6044
|
+
*/
|
6045
|
+
tmp=kto_check_pz("63a",kto,NULL);
|
5951
6046
|
for(i=0;i<8;i++)kto[i]=kto[i+2];
|
5952
6047
|
kto[8]='0';
|
5953
6048
|
kto[9]='0';
|
5954
6049
|
if((ret=kto_check_pz("63a",kto,NULL))==OK)
|
5955
6050
|
return OK_UNTERKONTO_ATTACHED;
|
5956
|
-
else
|
5957
|
-
|
6051
|
+
else{
|
6052
|
+
if(retvals){
|
6053
|
+
/* in retvals noch Werte f�r den Fehlerfall eintragen */
|
6054
|
+
retvals->methode="63b";
|
6055
|
+
retvals->pz_methode=2063;
|
6056
|
+
}
|
6057
|
+
if(tmp==OK) /* urspr�ngliches Konto war mit 63a g�ltig */
|
6058
|
+
return NO_IBAN_CALCULATION;
|
6059
|
+
else
|
6060
|
+
return ret;
|
6061
|
+
}
|
5958
6062
|
}
|
5959
6063
|
|
5960
6064
|
/* 7-stellige Konten: zuerst Unterkonto 00 anh�ngen (Vorschrift
|
@@ -8727,7 +8831,6 @@ static int iban_regel_cvt(char *blz,char *kto,const char **bicp,int regel_versio
|
|
8727
8831
|
}
|
8728
8832
|
#endif
|
8729
8833
|
|
8730
|
-
#line 9280 "konto_check.lxx"
|
8731
8834
|
/* Funktion lut_multiple() +���2 */
|
8732
8835
|
/* ###########################################################################
|
8733
8836
|
* # lut_multiple(): Universalfunktion, um zu einer gegebenen Bankleitzahl #
|
@@ -8995,7 +9098,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
8995
9098
|
FREE(sort_pz_f);
|
8996
9099
|
FREE(sort_plz);
|
8997
9100
|
FREE(sort_iban_regel);
|
8998
|
-
#line 9542 "konto_check.lxx"
|
8999
9101
|
if(name_raw && name_data!=name_raw)
|
9000
9102
|
FREE(name_raw);
|
9001
9103
|
else
|
@@ -9050,6 +9152,10 @@ DLL_EXPORT int lut_cleanup(void)
|
|
9050
9152
|
for(i=0;i<last_lut_suche_idx;i++)lut_suche_free(i);
|
9051
9153
|
FREE(lut_suche_arr);
|
9052
9154
|
last_lut_suche_idx=0;
|
9155
|
+
if(handle_ptr){
|
9156
|
+
for(i=0;i<h_cnt;i++)if(handle_ptr[i] && handle_free[i])FREE(handle_ptr[i]);
|
9157
|
+
free(handle_ptr);
|
9158
|
+
}
|
9053
9159
|
|
9054
9160
|
if(init_status&8){
|
9055
9161
|
|
@@ -9060,7 +9166,6 @@ DLL_EXPORT int lut_cleanup(void)
|
|
9060
9166
|
lut_cleanup(); /* neuer Versuch, aufzur�umen */
|
9061
9167
|
RETURN(INIT_FATAL_ERROR);
|
9062
9168
|
}
|
9063
|
-
#line 9612 "konto_check.lxx"
|
9064
9169
|
init_status&=1;
|
9065
9170
|
init_in_progress=0;
|
9066
9171
|
return OK;
|
@@ -9235,7 +9340,7 @@ static void init_atoi_table(void)
|
|
9235
9340
|
|
9236
9341
|
#if 1
|
9237
9342
|
/* �nderungen zum 9.6.2014 aktivieren */
|
9238
|
-
if(time(NULL)>
|
9343
|
+
if(time(NULL)>1410127200)pz_aenderungen_aktivieren=1;
|
9239
9344
|
#endif
|
9240
9345
|
|
9241
9346
|
/* ung�ltige Ziffern; Blanks und Tabs werden ebenfalls als ung�ltig
|
@@ -9501,7 +9606,6 @@ static void init_atoi_table(void)
|
|
9501
9606
|
lut_block_name2[126]="2. IBAN Regel idx";
|
9502
9607
|
lut_block_name2[127]="2. BIC Hauptst.idx";
|
9503
9608
|
lut_blocklen_max=453;
|
9504
|
-
#line 9854 "konto_check.lxx"
|
9505
9609
|
init_status|=1;
|
9506
9610
|
}
|
9507
9611
|
|
@@ -9561,7 +9665,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
9561
9665
|
|
9562
9666
|
switch(pz_methode){
|
9563
9667
|
|
9564
|
-
#line 9917 "konto_check.lxx"
|
9565
9668
|
/* Berechnungsmethoden 00 bis 09 +���3
|
9566
9669
|
Berechnung nach der Methode 00 +���4 */
|
9567
9670
|
/*
|
@@ -11890,7 +11993,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
11890
11993
|
* ######################################################################
|
11891
11994
|
*/
|
11892
11995
|
|
11893
|
-
#line 11922 "konto_check.lxx"
|
11894
11996
|
case 51:
|
11895
11997
|
if(*(kto+2)=='9'){ /* Ausnahme */
|
11896
11998
|
|
@@ -12152,8 +12254,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12152
12254
|
else
|
12153
12255
|
return FALSE;
|
12154
12256
|
|
12155
|
-
#line 12136 "konto_check.lxx"
|
12156
|
-
#line 12138 "konto_check.lxx"
|
12157
12257
|
/* Berechnung nach der Methode 53 +���4 */
|
12158
12258
|
/*
|
12159
12259
|
* ######################################################################
|
@@ -12452,7 +12552,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
12452
12552
|
* # bewerten. #
|
12453
12553
|
* ######################################################################
|
12454
12554
|
*/
|
12455
|
-
#line 12407 "konto_check.lxx"
|
12456
12555
|
case 57:
|
12457
12556
|
#if DEBUG>0
|
12458
12557
|
if(retvals){
|
@@ -13098,7 +13197,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
13098
13197
|
* # Pr�fzifferberechnung) #
|
13099
13198
|
* ######################################################################
|
13100
13199
|
*/
|
13101
|
-
#line 12987 "konto_check.lxx"
|
13102
13200
|
case 66:
|
13103
13201
|
#if DEBUG>0
|
13104
13202
|
case 2066:
|
@@ -15443,8 +15541,8 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
15443
15541
|
* # Ergebnis f�hren, sind nicht g�ltig. #
|
15444
15542
|
* # #
|
15445
15543
|
* # Die f�r die Berechnung relevante Kundennummer (K) befindet sich #
|
15446
|
-
* # bei der Methode A in den Stellen 4 bis 9 der Kontonummer
|
15447
|
-
* # den Methoden B bis E
|
15544
|
+
* # bei der Methode A und G in den Stellen 4 bis 9 der Kontonummer #
|
15545
|
+
* # und bei den Methoden B bis E in den Stellen 5 bis 9. #
|
15448
15546
|
* # #
|
15449
15547
|
* # Ausnahme: #
|
15450
15548
|
* # Ist nach linksb�ndigem Auff�llen mit Nullen auf 10 Stellen die #
|
@@ -20140,7 +20238,6 @@ static int kto_check_int(char *x_blz,int pz_methode,char *kto)
|
|
20140
20238
|
return NOT_IMPLEMENTED;
|
20141
20239
|
}
|
20142
20240
|
}
|
20143
|
-
#line 18898 "konto_check.lxx"
|
20144
20241
|
|
20145
20242
|
/*
|
20146
20243
|
* ######################################################################
|
@@ -20266,9 +20363,17 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20266
20363
|
blz=blz_n;
|
20267
20364
|
r=lut_iban_regel(blz,0,&ret);
|
20268
20365
|
if(regel && ret>0)*regel=r;
|
20269
|
-
if(
|
20366
|
+
if(retvals){
|
20367
|
+
/* in retvals noch Werte f�r den Fehlerfall eintragen */
|
20368
|
+
retvals->pz=-1;
|
20369
|
+
retvals->methode="-";
|
20370
|
+
retvals->pz_methode=-1;
|
20371
|
+
retvals->pz_pos=-1;
|
20372
|
+
}
|
20373
|
+
ret_regel=iban_regel_cvt(blz,kto,&bicp,r,retvals);
|
20270
20374
|
if(!bicp)bicp=lut_bic(blz,0,NULL);
|
20271
20375
|
if(bic)*bic=bicp;
|
20376
|
+
if(ret_regel<OK)return ret_regel;
|
20272
20377
|
ret=kto_check_blz_dbg(blz,kto,retvals);
|
20273
20378
|
if(strcmp(blz,blz_o) || strcmp(kto,kto_o)){ /* BLZ und/oder Kto ersetzt */
|
20274
20379
|
if(ret_regel>3) /* ret_regel<1 wurde schon oben zur�ckgegeben */
|
@@ -20280,7 +20385,8 @@ DLL_EXPORT int kto_check_regel_dbg(char *blz,char *kto,char *blz2,char *kto2,con
|
|
20280
20385
|
return ret;
|
20281
20386
|
#else
|
20282
20387
|
if(regel)*regel=0;
|
20283
|
-
|
20388
|
+
if(retvals)*retvals=NULL;
|
20389
|
+
return kto_check_regel(blz,kto);
|
20284
20390
|
#endif
|
20285
20391
|
}
|
20286
20392
|
|
@@ -20308,7 +20414,7 @@ DLL_EXPORT int kto_check_regel(char *blz,char *kto)
|
|
20308
20414
|
kto=kto_n;
|
20309
20415
|
blz=blz_n;
|
20310
20416
|
regel=lut_iban_regel(blz,0,&ret);
|
20311
|
-
if((ret_regel=iban_regel_cvt(blz,kto,&bicp,regel))<OK)return ret_regel;
|
20417
|
+
if((ret_regel=iban_regel_cvt(blz,kto,&bicp,regel,NULL))<OK)return ret_regel;
|
20312
20418
|
ret=kto_check_blz(blz,kto);
|
20313
20419
|
if(strcmp(blz,blz_o) || strcmp(kto,kto_o)){ /* BLZ und/oder Kto ersetzt */
|
20314
20420
|
if(ret_regel>3) /* ret_regel<1 wurde schon oben zur�ckgegeben */
|
@@ -20381,7 +20487,6 @@ DLL_EXPORT int kto_check_pz(char *pz,char *kto,char *blz)
|
|
20381
20487
|
* ###########################################################################
|
20382
20488
|
*/
|
20383
20489
|
|
20384
|
-
#line 19139 "konto_check.lxx"
|
20385
20490
|
static int kto_check_blz_x(char *blz,char *kto,int *uk_cnt)
|
20386
20491
|
{
|
20387
20492
|
char *ptr,*dptr,xkto[32];
|
@@ -20718,7 +20823,6 @@ DLL_EXPORT int kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)
|
|
20718
20823
|
* # Copyright (C) 2007 Michael Plugge <m.plugge@hs-mannheim.de> #
|
20719
20824
|
* ###########################################################################
|
20720
20825
|
*/
|
20721
|
-
#line 19476 "konto_check.lxx"
|
20722
20826
|
DLL_EXPORT int kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)
|
20723
20827
|
{
|
20724
20828
|
int untermethode,pz_methode;
|
@@ -20954,7 +21058,6 @@ DLL_EXPORT int get_lut_info2_b(char *lutname,int *version,char **prolog_p,char *
|
|
20954
21058
|
}
|
20955
21059
|
else
|
20956
21060
|
**user_info_p=0;
|
20957
|
-
#line 19697 "konto_check.lxx"
|
20958
21061
|
FREE(prolog);
|
20959
21062
|
return OK;
|
20960
21063
|
}
|
@@ -21031,7 +21134,8 @@ DLL_EXPORT void kc_free(char *ptr)
|
|
21031
21134
|
DLL_EXPORT void *kc_alloc(int size,int *retval)
|
21032
21135
|
{
|
21033
21136
|
void *ptr;
|
21034
|
-
|
21137
|
+
|
21138
|
+
if(!(ptr=(void*)calloc(size,1)))
|
21035
21139
|
*retval=ERROR_MALLOC;
|
21036
21140
|
else
|
21037
21141
|
*retval=OK;
|
@@ -21090,16 +21194,16 @@ DLL_EXPORT const char *get_kto_check_version_x(int mode)
|
|
21090
21194
|
case 4: /* Datum der Pr�fziffermethode */
|
21091
21195
|
#if 1
|
21092
21196
|
if(pz_aenderungen_aktivieren)
|
21093
|
-
return "09.
|
21197
|
+
return "08.09.2014";
|
21094
21198
|
else
|
21095
|
-
return "09.
|
21199
|
+
return "09.06.2014 (Aenderungen vom 08.09.2014 enthalten aber noch nicht aktiviert)";
|
21096
21200
|
#else
|
21097
|
-
return "09.
|
21201
|
+
return "08.09.2014";
|
21098
21202
|
#endif
|
21099
21203
|
case 5:
|
21100
|
-
return "
|
21204
|
+
return "08.09.2014";
|
21101
21205
|
case 6:
|
21102
|
-
return "
|
21206
|
+
return "1. September 2014"; /* Klartext-Datum der Bibliotheksversion */
|
21103
21207
|
case 7:
|
21104
21208
|
return "final"; /* Versions-Typ der Bibliotheksversion (development, beta, final) */
|
21105
21209
|
}
|
@@ -21247,7 +21351,6 @@ DLL_EXPORT int dump_lutfile(char *outputname,UINT4 *required)
|
|
21247
21351
|
default:
|
21248
21352
|
break;
|
21249
21353
|
}
|
21250
|
-
#line 19929 "konto_check.lxx"
|
21251
21354
|
fputc('\n',out);
|
21252
21355
|
while(--i)fputc('=',out);
|
21253
21356
|
fputc('\n',out);
|
@@ -21429,8 +21532,9 @@ DLL_EXPORT int rebuild_blzfile(char *inputname,char *outputname,UINT4 set)
|
|
21429
21532
|
fprintf(out,"%06d\n",regel);
|
21430
21533
|
else
|
21431
21534
|
fputc('\n',out);
|
21432
|
-
}
|
21535
|
+
}
|
21433
21536
|
}
|
21537
|
+
fclose(out);
|
21434
21538
|
return OK;
|
21435
21539
|
}
|
21436
21540
|
|
@@ -21553,6 +21657,27 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
|
|
21553
21657
|
return bic;
|
21554
21658
|
}
|
21555
21659
|
|
21660
|
+
/* Funktion iban2bic_id() +���1 */
|
21661
|
+
/* ###########################################################################
|
21662
|
+
* # Die Funktion iban2bic_id() entspricht der Funktion iban2bic(); f�r #
|
21663
|
+
* # die Parameter blz und kto wird allerdings Speicher allokiert und per #
|
21664
|
+
* # Handle wieder zur�ckgegeben. #
|
21665
|
+
* # #
|
21666
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
21667
|
+
* ###########################################################################
|
21668
|
+
*/
|
21669
|
+
|
21670
|
+
DLL_EXPORT const char *iban2bic_id(char *iban,int *retval,int *blz,int *kto)
|
21671
|
+
{
|
21672
|
+
char *b,*k;
|
21673
|
+
|
21674
|
+
if(!(b=(char*)malloc(12)) || !(k=(char*)malloc(12)) || kc_ptr2id(b,blz,1)<0 || kc_ptr2id(k,kto,1)<0){
|
21675
|
+
if(retval)*retval=ERROR_MALLOC;
|
21676
|
+
return "";
|
21677
|
+
}
|
21678
|
+
return iban2bic(iban,retval,b,k);
|
21679
|
+
}
|
21680
|
+
|
21556
21681
|
/* Funktion iban_gen(), iban_bic_gen() und iban_bic_gen1 +���1 */
|
21557
21682
|
/* ###########################################################################
|
21558
21683
|
* # Die Funktion iban_gen generiert aus Bankleitzahl und Kontonummer eine #
|
@@ -21628,19 +21753,59 @@ DLL_EXPORT const char *iban2bic(char *iban,int *retval,char *blz,char *kto)
|
|
21628
21753
|
* ###########################################################################
|
21629
21754
|
*/
|
21630
21755
|
|
21631
|
-
#line 20310 "konto_check.lxx"
|
21632
21756
|
DLL_EXPORT char *iban_gen(char *blz,char *kto,int *retval)
|
21633
21757
|
{
|
21634
21758
|
return iban_bic_gen(blz,kto,NULL,NULL,NULL,retval);
|
21635
21759
|
}
|
21636
21760
|
|
21637
|
-
DLL_EXPORT
|
21761
|
+
DLL_EXPORT int iban_gen_id(char *blz,char *kto,int *retval)
|
21638
21762
|
{
|
21639
|
-
|
21763
|
+
char *ptr;
|
21764
|
+
int rv,id;
|
21765
|
+
|
21766
|
+
if(!(ptr=iban_bic_gen(blz,kto,NULL,NULL,NULL,retval)))return -1; /* retval wurde in iban_bic_gen gesetzt, daher gleich return */
|
21767
|
+
if((rv=kc_ptr2id(ptr,&id,1))<0){
|
21768
|
+
*retval=rv;
|
21769
|
+
return -1;
|
21770
|
+
}
|
21771
|
+
return id;
|
21640
21772
|
}
|
21641
21773
|
|
21774
|
+
DLL_EXPORT int iban_bic_gen_id(char *blz,char *kto,int *bic2,int *blz2,int *kto2,int *retval)
|
21775
|
+
{
|
21776
|
+
char *ptr,*bp2,*b2,*k2;
|
21777
|
+
const char *bp;
|
21778
|
+
int rv,id;
|
21779
|
+
|
21780
|
+
bp2=b2=k2=NULL;
|
21781
|
+
if(!(bp2=(char*)malloc(16)) || !(b2=(char*)malloc(16)) || !(k2=(char*)malloc(16))){
|
21782
|
+
FREE(bp2);
|
21783
|
+
FREE(b2);
|
21784
|
+
FREE(k2);
|
21785
|
+
return ERROR_MALLOC;
|
21786
|
+
}
|
21787
|
+
ptr=iban_bic_gen(blz,kto,&bp,b2,k2,retval);
|
21788
|
+
strcpy(bp2,(char*)bp);
|
21789
|
+
if((rv=kc_ptr2id(bp2,bic2,1))<0 || (rv=kc_ptr2id(b2,blz2,1))<0 || (rv=kc_ptr2id(k2,kto2,1))<0){
|
21790
|
+
FREE(bp2);
|
21791
|
+
FREE(b2);
|
21792
|
+
FREE(k2);
|
21793
|
+
*retval=rv;
|
21794
|
+
return -1;
|
21795
|
+
}
|
21796
|
+
|
21797
|
+
if(!ptr)return -1; /* Fehler bei der Generierung */
|
21798
|
+
if((rv=kc_ptr2id(ptr,&id,1))<0){
|
21799
|
+
*retval=rv;
|
21800
|
+
return -1;
|
21801
|
+
}
|
21802
|
+
return id;
|
21803
|
+
}
|
21642
21804
|
|
21643
|
-
|
21805
|
+
DLL_EXPORT char *iban_bic_gen1(char *blz,char *kto,const char **bicp,int *retval)
|
21806
|
+
{
|
21807
|
+
return iban_bic_gen(blz,kto,bicp,NULL,NULL,retval);
|
21808
|
+
}
|
21644
21809
|
|
21645
21810
|
DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,char *kto2,int *retval)
|
21646
21811
|
{
|
@@ -21706,7 +21871,7 @@ DLL_EXPORT char *iban_bic_gen(char *blz,char *kto,const char **bicp,char *blz2,c
|
|
21706
21871
|
}
|
21707
21872
|
|
21708
21873
|
/* IBAN-Regeln anwenden; u.U. wird BLZ und/oder Konto ersetzt */
|
21709
|
-
if((ret_regel=iban_regel_cvt(blz,kto,&bic,regel))<OK){
|
21874
|
+
if((ret_regel=iban_regel_cvt(blz,kto,&bic,regel,NULL))<OK){
|
21710
21875
|
if(!bic)bic=lut_bic(blz,0,NULL);
|
21711
21876
|
if(!strncmp(bic," ",8))bic="";
|
21712
21877
|
if(retval)*retval=ret_regel;
|
@@ -22308,6 +22473,33 @@ DLL_EXPORT int ipi_gen(char *zweck,char *dst,char *papier)
|
|
22308
22473
|
return OK;
|
22309
22474
|
}
|
22310
22475
|
|
22476
|
+
/* Funktion ipi_gen_id() +���1 */
|
22477
|
+
/* ###########################################################################
|
22478
|
+
* # Die Funktion ipi_gen_id entspricht der Funktion ipi_gen(); allerdings #
|
22479
|
+
* # wird f�r die beiden Parameter dst und papier Speicher allokiert und #
|
22480
|
+
* # �ber jeweils ein Handle wieder zur�ckgegeben. Mit der Funktion #
|
22481
|
+
* # kc_id2ptr() kann das Handle in einen String umgewandelt werden, sowie #
|
22482
|
+
* # mittels der Funktion kc_id_free() wieder freigegeben werden. #
|
22483
|
+
* # #
|
22484
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
22485
|
+
* ###########################################################################
|
22486
|
+
*/
|
22487
|
+
|
22488
|
+
DLL_EXPORT int ipi_gen_id(char *zweck,int *dst,int *papier)
|
22489
|
+
{
|
22490
|
+
char *d,*p;
|
22491
|
+
int retval,rv;
|
22492
|
+
|
22493
|
+
if(!(d=(char*)malloc(24)))return ERROR_MALLOC;
|
22494
|
+
if(!(p=(char*)malloc(32))){
|
22495
|
+
free(d);
|
22496
|
+
return ERROR_MALLOC;
|
22497
|
+
}
|
22498
|
+
retval=ipi_gen(zweck,d,p);
|
22499
|
+
if((rv=kc_ptr2id(d,dst,1)<0) || (rv=kc_ptr2id(p,papier,1)<0))return rv;
|
22500
|
+
return retval;
|
22501
|
+
}
|
22502
|
+
|
22311
22503
|
/* Funktion ipi_check() +���1 */
|
22312
22504
|
/* ###########################################################################
|
22313
22505
|
* # Die Funktion ipi_check testet einen Strukturierten Verwendungszweck #
|
@@ -22375,7 +22567,6 @@ DLL_EXPORT int ipi_check(char *zweck)
|
|
22375
22567
|
* # Copyright (C) 2009,2011 Michael Plugge <m.plugge@hs-mannheim.de> #
|
22376
22568
|
* ###########################################################################
|
22377
22569
|
*/
|
22378
|
-
#line 21106 "konto_check.lxx"
|
22379
22570
|
|
22380
22571
|
/* Funktion volltext_zeichen() +���2 */
|
22381
22572
|
/* Diese Funktion gibt f�r Zeichen die bei der Volltextsuche g�ltig sind
|
@@ -23221,7 +23412,6 @@ static int qcmp_bic_h(const void *ap,const void *bp)
|
|
23221
23412
|
return a-b;
|
23222
23413
|
}
|
23223
23414
|
|
23224
|
-
#line 21952 "konto_check.lxx"
|
23225
23415
|
|
23226
23416
|
/* Funktion qcmp_bic() +���3 */
|
23227
23417
|
static int qcmp_bic(const void *ap,const void *bp)
|
@@ -23326,7 +23516,6 @@ static int qcmp_iban_regel(const void *ap,const void *bp)
|
|
23326
23516
|
else
|
23327
23517
|
return a-b;
|
23328
23518
|
}
|
23329
|
-
#line 21967 "konto_check.lxx"
|
23330
23519
|
|
23331
23520
|
/* Funktion init_blzf() +���2
|
23332
23521
|
* Diese Funktion initialisiert das Array mit den Bankleitzahlen f�r alle
|
@@ -23394,7 +23583,6 @@ DLL_EXPORT int konto_check_idx2blz(int idx,int *zweigstelle,int *retval)
|
|
23394
23583
|
}
|
23395
23584
|
|
23396
23585
|
/* Funktion suche_int1() +���2 */
|
23397
|
-
#line 22035 "konto_check.lxx"
|
23398
23586
|
static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23399
23587
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int cnt,int such_idx)
|
23400
23588
|
{
|
@@ -23445,7 +23633,6 @@ static int suche_int1(int a1,int a2,int *anzahl,int **start_idx,int **zweigstell
|
|
23445
23633
|
}
|
23446
23634
|
|
23447
23635
|
/* Funktion suche_int2() +���2 */
|
23448
|
-
#line 22086 "konto_check.lxx"
|
23449
23636
|
static int suche_int2(int a1,int a2,int *anzahl,int **start_idx,int **zweigstellen_base,int **blz_base,
|
23450
23637
|
int **base_name,int **base_sort,int(*cmp)(const void *, const void *),int such_idx,int pz_suche)
|
23451
23638
|
{
|
@@ -24023,7 +24210,6 @@ static int cmp_suche_sort(const void *ap,const void *bp)
|
|
24023
24210
|
DLL_EXPORT int lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_op,int uniq)
|
24024
24211
|
{
|
24025
24212
|
int i,j,last_idx,*idx_a,*cnt_o;
|
24026
|
-
#line 22665 "konto_check.lxx"
|
24027
24213
|
|
24028
24214
|
if(idx_op)*idx_op=NULL;
|
24029
24215
|
if(cnt_op)*cnt_op=NULL;
|
@@ -24105,7 +24291,6 @@ DLL_EXPORT int lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl
|
|
24105
24291
|
return OK;
|
24106
24292
|
}
|
24107
24293
|
|
24108
|
-
#line 22748 "konto_check.lxx"
|
24109
24294
|
/* Funktion lut_suche_volltext() +���2 */
|
24110
24295
|
DLL_EXPORT int lut_suche_volltext(char *such_wort,int *anzahl,int *base_name_idx,char ***base_name,
|
24111
24296
|
int *zweigstellen_anzahl,int **start_idx,int **zweigstellen_base,int **blz_base)
|
@@ -24235,7 +24420,7 @@ DLL_EXPORT int lut_suche_blz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24235
24420
|
return suche_int1(such1,such2,anzahl,start_idx,zweigstellen_base,blz_base,&blz_f,&sort_blz,qcmp_blz,cnt,0);
|
24236
24421
|
}
|
24237
24422
|
|
24238
|
-
#line
|
24423
|
+
#line 23085 "konto_check.lxx"
|
24239
24424
|
/* Funktion lut_suche_bic() +���2 */
|
24240
24425
|
DLL_EXPORT int lut_suche_bic(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
24241
24426
|
char ***base_name,int **blz_base)
|
@@ -24289,7 +24474,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24289
24474
|
{
|
24290
24475
|
int retval;
|
24291
24476
|
|
24292
|
-
|
24293
24477
|
if(anzahl)*anzahl=0;
|
24294
24478
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24295
24479
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24303,7 +24487,6 @@ DLL_EXPORT int lut_suche_pz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24303
24487
|
/* Funktion lut_suche_plz() +���2 */
|
24304
24488
|
DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24305
24489
|
{
|
24306
|
-
|
24307
24490
|
if(anzahl)*anzahl=0;
|
24308
24491
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24309
24492
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24316,7 +24499,6 @@ DLL_EXPORT int lut_suche_plz(int such1,int such2,int *anzahl,int **start_idx,int
|
|
24316
24499
|
/* Funktion lut_suche_regel() +���2 */
|
24317
24500
|
DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,int **zweigstellen_base,int **base_name,int **blz_base)
|
24318
24501
|
{
|
24319
|
-
|
24320
24502
|
if(anzahl)*anzahl=0;
|
24321
24503
|
if(such2 && such1>such2)return INVALID_SEARCH_RANGE;
|
24322
24504
|
if((init_status&7)<7)return LUT2_NOT_INITIALIZED;
|
@@ -24326,7 +24508,6 @@ DLL_EXPORT int lut_suche_regel(int such1,int such2,int *anzahl,int **start_idx,i
|
|
24326
24508
|
return suche_int2(such1*100,such2*100+99,anzahl,start_idx,zweigstellen_base,blz_base,&iban_regel,&sort_iban_regel,qcmp_iban_regel,LUT2_IBAN_REGEL_SORT,0);
|
24327
24509
|
}
|
24328
24510
|
|
24329
|
-
#line 22931 "konto_check.lxx"
|
24330
24511
|
|
24331
24512
|
/* Funktion lut_suche_bic_h() +���2 */
|
24332
24513
|
DLL_EXPORT int lut_suche_bic_h(char *such_name,int *anzahl,int **start_idx,int **zweigstellen_base,
|
@@ -24712,9 +24893,8 @@ DLL_EXPORT const char *iban_ort(char *iban,int filiale,int*retval)
|
|
24712
24893
|
{
|
24713
24894
|
return iban_fkt_s(iban,filiale,retval,lut_ort);
|
24714
24895
|
}
|
24715
|
-
#line 23020 "konto_check.lxx"
|
24716
24896
|
|
24717
|
-
static int bic_fkt_c(char *bic1,int mode,int filiale,int*retval,char *base,int error)
|
24897
|
+
static int bic_fkt_c(char *bic1,int mode,int filiale,int *retval,char *base,int error)
|
24718
24898
|
{
|
24719
24899
|
int cnt,start_idx,rv,ret1,ret2;
|
24720
24900
|
|
@@ -24740,7 +24920,7 @@ static int bic_fkt_c(char *bic1,int mode,int filiale,int*retval,char *base,int e
|
|
24740
24920
|
return rv;
|
24741
24921
|
}
|
24742
24922
|
|
24743
|
-
static int biq_fkt_c(int idx,int*retval,char *base,int error)
|
24923
|
+
static int biq_fkt_c(int idx,int *retval,char *base,int error)
|
24744
24924
|
{
|
24745
24925
|
int ret;
|
24746
24926
|
|
@@ -24808,7 +24988,7 @@ static int iban_fkt_c(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int
|
|
24808
24988
|
return fkt(blz,filiale,retval);
|
24809
24989
|
}
|
24810
24990
|
|
24811
|
-
static int bic_fkt_i(char *bic1,int mode,int filiale,int*retval,int *base,int error)
|
24991
|
+
static int bic_fkt_i(char *bic1,int mode,int filiale,int *retval,int *base,int error)
|
24812
24992
|
{
|
24813
24993
|
int cnt,start_idx,rv,ret1,ret2;
|
24814
24994
|
|
@@ -24834,7 +25014,7 @@ static int bic_fkt_i(char *bic1,int mode,int filiale,int*retval,int *base,int er
|
|
24834
25014
|
return rv;
|
24835
25015
|
}
|
24836
25016
|
|
24837
|
-
static int biq_fkt_i(int idx,int*retval,int *base,int error)
|
25017
|
+
static int biq_fkt_i(int idx,int *retval,int *base,int error)
|
24838
25018
|
{
|
24839
25019
|
int ret;
|
24840
25020
|
|
@@ -24905,7 +25085,7 @@ static int iban_fkt_i(char *iban,int filiale,int *retval,int(*fkt)(char*,int,int
|
|
24905
25085
|
return fkt(blz,filiale,retval);
|
24906
25086
|
}
|
24907
25087
|
|
24908
|
-
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int*retval,char **base,int error)
|
25088
|
+
static const char *bic_fkt_s(char *bic1,int mode,int filiale,int *retval,char **base,int error)
|
24909
25089
|
{
|
24910
25090
|
const char *rv;
|
24911
25091
|
int cnt,start_idx,ret1,ret2;
|
@@ -24932,7 +25112,7 @@ static const char *bic_fkt_s(char *bic1,int mode,int filiale,int*retval,char **b
|
|
24932
25112
|
return rv;
|
24933
25113
|
}
|
24934
25114
|
|
24935
|
-
static const char *biq_fkt_s(int idx,int*retval,char **base,int error)
|
25115
|
+
static const char *biq_fkt_s(int idx,int *retval,char **base,int error)
|
24936
25116
|
{
|
24937
25117
|
int ret;
|
24938
25118
|
|
@@ -25990,7 +26170,6 @@ DLL_EXPORT const char *pz2str(int pz,int *ret)
|
|
25990
26170
|
default: return "???";
|
25991
26171
|
}
|
25992
26172
|
}
|
25993
|
-
#line 23975 "konto_check.lxx"
|
25994
26173
|
|
25995
26174
|
/* Funktion lut_keine_iban_berechnung() +���1 */
|
25996
26175
|
/*
|
@@ -26153,6 +26332,264 @@ DLL_EXPORT char *kto_check_test_vars(char *txt,UINT4 i)
|
|
26153
26332
|
|
26154
26333
|
#endif
|
26155
26334
|
|
26335
|
+
|
26336
|
+
/* Funktionen *_id() +���1 */
|
26337
|
+
/* ###########################################################################
|
26338
|
+
* # Die folgenden Funktionen sind die id-Varianten von Funktionen, die #
|
26339
|
+
* # normalerweise einen (konstanten) String zur�ckgeben; �ber diese Hilfs- #
|
26340
|
+
* # funktionen wird stattdessen eine ID generiert und zur�ckgegeben. Bei #
|
26341
|
+
* # Stringkonstanten wird f�r den entsprechenden id-Slot kein Speicher #
|
26342
|
+
* # allokiert, sondern der Pointer wird direkt auf den String gesetzt. Auch #
|
26343
|
+
* # beim Aufruf von kc_id_free() wird f�r den Speicherblock nicht free() #
|
26344
|
+
* # aufgerufen, sondern einfach nur der Slot freigegeben. #
|
26345
|
+
* # #
|
26346
|
+
* # Da der Aufruf f�r jede Funktionsgruppe gleich ist, wird er per Makro #
|
26347
|
+
* # gemacht. #
|
26348
|
+
* # #
|
26349
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26350
|
+
* ###########################################################################
|
26351
|
+
*/
|
26352
|
+
/* numerische R�ckgabewerte in eine id umwandeln */
|
26353
|
+
#define RV_ID(fkt) \
|
26354
|
+
DLL_EXPORT int kto_check_retval2 ## fkt ## _id(int retval)\
|
26355
|
+
{\
|
26356
|
+
int handle,rv;\
|
26357
|
+
\
|
26358
|
+
rv=kc_ptr2id((char*)kto_check_retval2 ## fkt(retval),&handle,0);\
|
26359
|
+
if(rv<0)\
|
26360
|
+
return -1;\
|
26361
|
+
else\
|
26362
|
+
return handle;\
|
26363
|
+
}
|
26364
|
+
|
26365
|
+
RV_ID(txt)
|
26366
|
+
RV_ID(txt_short)
|
26367
|
+
RV_ID(html)
|
26368
|
+
RV_ID(utf8)
|
26369
|
+
RV_ID(dos)
|
26370
|
+
|
26371
|
+
/* lut_*() und iban_*() Funktionen */
|
26372
|
+
#define LUT_ID(fkt) \
|
26373
|
+
DLL_EXPORT int fkt ## _id(char *b,int zweigstelle,int *retval)\
|
26374
|
+
{\
|
26375
|
+
int handle,rv;\
|
26376
|
+
\
|
26377
|
+
rv=kc_ptr2id((char*)fkt(b,zweigstelle,retval),&handle,0);\
|
26378
|
+
if(rv<0)\
|
26379
|
+
return -1;\
|
26380
|
+
else\
|
26381
|
+
return handle;\
|
26382
|
+
}
|
26383
|
+
|
26384
|
+
LUT_ID(lut_name);
|
26385
|
+
LUT_ID(lut_name_kurz);
|
26386
|
+
LUT_ID(lut_ort);
|
26387
|
+
LUT_ID(lut_bic);
|
26388
|
+
LUT_ID(lut_bic_h);
|
26389
|
+
LUT_ID(iban_bic);
|
26390
|
+
LUT_ID(iban_bic_h);
|
26391
|
+
LUT_ID(iban_name);
|
26392
|
+
LUT_ID(iban_name_kurz);
|
26393
|
+
LUT_ID(iban_ort);
|
26394
|
+
|
26395
|
+
#define LUT_I_ID(fkt) \
|
26396
|
+
DLL_EXPORT int fkt ## _id(int b,int zweigstelle,int *retval)\
|
26397
|
+
{\
|
26398
|
+
int handle,rv;\
|
26399
|
+
\
|
26400
|
+
rv=kc_ptr2id((char*)fkt(b,zweigstelle,retval),&handle,0);\
|
26401
|
+
if(rv<0)\
|
26402
|
+
return -1;\
|
26403
|
+
else\
|
26404
|
+
return handle;\
|
26405
|
+
}
|
26406
|
+
|
26407
|
+
LUT_I_ID(lut_bic_hi);
|
26408
|
+
LUT_I_ID(lut_name_i);
|
26409
|
+
LUT_I_ID(lut_name_kurz_i);
|
26410
|
+
LUT_I_ID(lut_ort_i);
|
26411
|
+
LUT_I_ID(lut_bic_i);
|
26412
|
+
|
26413
|
+
#define BIC_ID(fkt) \
|
26414
|
+
DLL_EXPORT int fkt ## _id(char *b,int mode,int zweigstelle,int *retval)\
|
26415
|
+
{\
|
26416
|
+
int handle,rv;\
|
26417
|
+
\
|
26418
|
+
rv=kc_ptr2id((char*)fkt(b,mode,zweigstelle,retval),&handle,0);\
|
26419
|
+
if(rv<0)\
|
26420
|
+
return -1;\
|
26421
|
+
else\
|
26422
|
+
return handle;\
|
26423
|
+
}
|
26424
|
+
|
26425
|
+
BIC_ID(bic_bic);
|
26426
|
+
BIC_ID(bic_bic_h);
|
26427
|
+
BIC_ID(bic_name);
|
26428
|
+
BIC_ID(bic_name_kurz);
|
26429
|
+
BIC_ID(bic_ort);
|
26430
|
+
|
26431
|
+
#define BIQ_ID(fkt) \
|
26432
|
+
DLL_EXPORT int fkt ## _id(int idx,int *retval)\
|
26433
|
+
{\
|
26434
|
+
int handle,rv;\
|
26435
|
+
\
|
26436
|
+
rv=kc_ptr2id((char*)fkt(idx,retval),&handle,0);\
|
26437
|
+
if(rv<0)\
|
26438
|
+
return -1;\
|
26439
|
+
else\
|
26440
|
+
return handle;\
|
26441
|
+
}
|
26442
|
+
|
26443
|
+
BIQ_ID(biq_bic);
|
26444
|
+
BIQ_ID(biq_bic_h);
|
26445
|
+
BIQ_ID(biq_name);
|
26446
|
+
BIQ_ID(biq_name_kurz);
|
26447
|
+
BIQ_ID(biq_ort);
|
26448
|
+
|
26449
|
+
DLL_EXPORT int kto_check_encoding_str_id(int mode)
|
26450
|
+
{
|
26451
|
+
int handle,rv;
|
26452
|
+
|
26453
|
+
rv=kc_ptr2id((char*)kto_check_encoding_str(mode),&handle,0);
|
26454
|
+
if(rv<0)
|
26455
|
+
return -1;
|
26456
|
+
else
|
26457
|
+
return handle;
|
26458
|
+
}
|
26459
|
+
|
26460
|
+
DLL_EXPORT int get_kto_check_version_id(int mode)
|
26461
|
+
{
|
26462
|
+
int handle,rv;
|
26463
|
+
|
26464
|
+
rv=kc_ptr2id((char*)get_kto_check_version_x(mode),&handle,0);
|
26465
|
+
if(rv<0)
|
26466
|
+
return -1;
|
26467
|
+
else
|
26468
|
+
return handle;
|
26469
|
+
}
|
26470
|
+
|
26471
|
+
DLL_EXPORT int current_lutfile_name_id(int *set,int *level,int *retval)
|
26472
|
+
{
|
26473
|
+
int handle,rv;
|
26474
|
+
|
26475
|
+
rv=kc_ptr2id((char*)current_lutfile_name(set,level,retval),&handle,0);
|
26476
|
+
if(rv<0)
|
26477
|
+
return -1;
|
26478
|
+
else
|
26479
|
+
return handle;
|
26480
|
+
}
|
26481
|
+
|
26482
|
+
|
26483
|
+
/* Funktionen kc_ptr2id(), kc_id2ptr() und kc_id_free() +���1 */
|
26484
|
+
/* ###########################################################################
|
26485
|
+
* # Die folgenden Funktionen dienen dazu, ein Array von (char-)Pointern #
|
26486
|
+
* # aufzubauen, in dem die Adressen von allokierten Strings gespeichert #
|
26487
|
+
* # werden. Die Routinen, die Speicher f�r Strings allokieren, k�nnen dann #
|
26488
|
+
* # in der DLL die String-Routinen direkt verwenden und m�ssen nicht mehr #
|
26489
|
+
* # den etwas eigenwilligen (Schleich-)Weg �ber IntPtr nehmen, damit der #
|
26490
|
+
* # Speicher wieder freigegeben werden kann... #
|
26491
|
+
* # #
|
26492
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26493
|
+
* ###########################################################################
|
26494
|
+
*/
|
26495
|
+
|
26496
|
+
/* Funktion kc_ptr2id() +���2 */
|
26497
|
+
/* ###########################################################################
|
26498
|
+
* # Die Funktion kc_ptr2id() sucht f�r einen Pointer einen freien Slot #
|
26499
|
+
* # in dem Array handle_ptr[]; falls kein Platz mehr in dem Array ist oder #
|
26500
|
+
* # es noch nicht initialisiert wurde, wird es erweitert. #
|
26501
|
+
* # #
|
26502
|
+
* # Falls die Variable release_mem 1 ist wird der Speicher bei Aufruf der #
|
26503
|
+
* # Funktion kc_id_free() wieder freigegeben, andernfalls bleibt der Pointer#
|
26504
|
+
* # erhalten. Beim Aufruf mit release_mem=0 k�nnen somit auch String- #
|
26505
|
+
* # Konstanten einem Handle zugeordnet werden. Falls die entsprechende #
|
26506
|
+
* # Konstante schon ein Handle hat, wird dieses zur�ckgegeben; beim Aufruf #
|
26507
|
+
* # von kc_id_free() wird es auch nicht gel�scht, der Funktionsaufruf gibt #
|
26508
|
+
* # nur OK zur�ck, ohne etwas zu tun. #
|
26509
|
+
* # #
|
26510
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26511
|
+
* ###########################################################################
|
26512
|
+
*/
|
26513
|
+
|
26514
|
+
#define HANDLE_CNT_INCREMENT 100
|
26515
|
+
|
26516
|
+
static int kc_ptr2id(char *ptr,int *handle,int release_mem)
|
26517
|
+
{
|
26518
|
+
int i;
|
26519
|
+
|
26520
|
+
*handle=-1; /* f�r evl. malloc-Fehler vorbelegen */
|
26521
|
+
if(!h_cnt){
|
26522
|
+
if(!(handle_ptr=(char **)calloc(sizeof(char*),HANDLE_CNT_INCREMENT)) || !(handle_free=(int*)calloc(sizeof(int),HANDLE_CNT_INCREMENT)))return ERROR_MALLOC;
|
26523
|
+
h_cnt=HANDLE_CNT_INCREMENT;
|
26524
|
+
}
|
26525
|
+
if(!release_mem) /* Handle f�r fixen String, suchen ob er schon vergeben wurde */
|
26526
|
+
for(i=0;i<h_cnt;i++)if(handle_ptr[i]==ptr && !handle_free[i]){
|
26527
|
+
*handle=i;
|
26528
|
+
return OK;
|
26529
|
+
}
|
26530
|
+
for(i=0;i<h_cnt;i++)if(!handle_ptr[i]){
|
26531
|
+
*handle=i;
|
26532
|
+
handle_ptr[i]=ptr;
|
26533
|
+
handle_free[i]=release_mem;
|
26534
|
+
return OK;
|
26535
|
+
}
|
26536
|
+
if(!(handle_ptr=(char **)realloc(handle_ptr,sizeof(char*)*(h_cnt+HANDLE_CNT_INCREMENT)))
|
26537
|
+
|| !(handle_free=(int*)realloc(handle_free,sizeof(int)*(h_cnt+HANDLE_CNT_INCREMENT))))return ERROR_MALLOC;
|
26538
|
+
h_cnt+=HANDLE_CNT_INCREMENT;
|
26539
|
+
*handle=i;
|
26540
|
+
handle_ptr[i]=ptr;
|
26541
|
+
handle_free[i++]=release_mem;
|
26542
|
+
for(;i<h_cnt;i++){
|
26543
|
+
handle_ptr[i]=NULL;
|
26544
|
+
handle_free[i]=0;
|
26545
|
+
}
|
26546
|
+
return OK;
|
26547
|
+
}
|
26548
|
+
|
26549
|
+
/* Funktion kc_id2ptr() +���2 */
|
26550
|
+
/* ###########################################################################
|
26551
|
+
* # Diese Funktion gibt den Pointer zu einem Handle zur�ck. Dieser Wert #
|
26552
|
+
* # kann dann als String-Pointer in den DLL-Routinen verwendet werden. #
|
26553
|
+
* # #
|
26554
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26555
|
+
* ###########################################################################
|
26556
|
+
*/
|
26557
|
+
|
26558
|
+
DLL_EXPORT char *kc_id2ptr(int handle,int *retval)
|
26559
|
+
{
|
26560
|
+
if(handle>=0 && handle<h_cnt && handle_ptr[handle]){
|
26561
|
+
if(retval)*retval=OK;
|
26562
|
+
return handle_ptr[handle];
|
26563
|
+
}
|
26564
|
+
else{
|
26565
|
+
if(retval)*retval=INVALID_HANDLE;
|
26566
|
+
return "";
|
26567
|
+
}
|
26568
|
+
}
|
26569
|
+
|
26570
|
+
/* Funktion kc_id_free() +���2 */
|
26571
|
+
/* ###########################################################################
|
26572
|
+
* # Diese Funktion gibt den Speicher, der zu einem Handle geh�rt, wieder #
|
26573
|
+
* # frei und setzt den entsprechenden Slot-Eintrag auf NULL. #
|
26574
|
+
* # #
|
26575
|
+
* # Copyright (C) 2014 Michael Plugge <m.plugge@hs-mannheim.de> #
|
26576
|
+
* ###########################################################################
|
26577
|
+
*/
|
26578
|
+
|
26579
|
+
DLL_EXPORT int kc_id_free(int handle)
|
26580
|
+
{
|
26581
|
+
if(handle>=0 && handle<h_cnt && handle_ptr[handle]){
|
26582
|
+
if(handle_free[handle]){ /* Freigabe nur bei allokiertem Speicher */
|
26583
|
+
free(handle_ptr[handle]);
|
26584
|
+
handle_ptr[handle]=NULL;
|
26585
|
+
handle_free[handle]=0;
|
26586
|
+
}
|
26587
|
+
return OK;
|
26588
|
+
}
|
26589
|
+
return INVALID_HANDLE;
|
26590
|
+
}
|
26591
|
+
|
26592
|
+
|
26156
26593
|
#else /* !INCLUDE_KONTO_CHECK_DE */
|
26157
26594
|
/* Leerdefinitionen f�r !INCLUDE_KONTO_CHECK_DE +���1 */
|
26158
26595
|
#include "konto_check.h"
|
@@ -26200,6 +26637,8 @@ XI lut_init(char *lut_name,int required,int set)EXCLUDED
|
|
26200
26637
|
XI kto_check_init(char *lut_name,int *required,int **status,int set,int incremental)EXCLUDED
|
26201
26638
|
XI kto_check_init_p(char *lut_name,int required,int set,int incremental)EXCLUDED
|
26202
26639
|
XI lut_info(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXCLUDED
|
26640
|
+
XI lut_info_b(char *lut_name,char **info1,char **info2,int *valid1,int *valid2)EXCLUDED
|
26641
|
+
XI lut_info_id(char *lut_name,int *info1,int *info2,int *valid1,int *valid2)EXCLUDED
|
26203
26642
|
XI lut_valid(void)EXCLUDED
|
26204
26643
|
XI lut_multiple(char *b,int *cnt,int **p_blz,char ***p_name,char ***p_name_kurz,int **p_plz,char ***p_ort,
|
26205
26644
|
int **p_pan,char ***p_bic,int *p_pz,int **p_nr,char **p_aenderung,char **p_loeschung,int **p_nachfolge_blz,
|
@@ -26286,10 +26725,14 @@ XI ci_check(char *ci)EXCLUDED
|
|
26286
26725
|
XI bic_check(char *search_bic,int *cnt)EXCLUDED
|
26287
26726
|
XI iban_check(char *iban,int *retval)EXCLUDED
|
26288
26727
|
XCC iban2bic(char *iban,int *retval,char *blz,char *kto)EXCLUDED_S
|
26728
|
+
XCC iban2bic_id(char *iban,int *retval,int *blz,int *kto)EXCLUDED_S
|
26289
26729
|
XC iban_gen(char *kto,char *blz,int *retval)EXCLUDED_S
|
26730
|
+
XI iban_gen_id(char *kto,char *blz,int *retval)EXCLUDED
|
26290
26731
|
XC char *iban_bic_gen(char *blz,char *kto,const char **bic,char *blz2,char *kto2,int *retval)EXCLUDED_S
|
26291
26732
|
XC char *iban_bic_gen1(char *blz,char *kto,const char **bic,int *retval)EXCLUDED_S
|
26292
26733
|
XI ipi_gen(char *zweck,char *dst,char *papier)EXCLUDED
|
26734
|
+
XI ipi_gen_id(char *zweck,int *dst,int *papier)EXCLUDED
|
26735
|
+
XI iban_bic_gen_id(char *blz,char *kto,int *bic2,int *blz2,int *kto2,int *retval)EXCLUDED
|
26293
26736
|
XI ipi_check(char *zweck)EXCLUDED
|
26294
26737
|
XI kto_check_blz_dbg(char *blz,char *kto,RETVAL *retvals)EXCLUDED
|
26295
26738
|
XI kto_check_pz_dbg(char *pz,char *kto,char *blz,RETVAL *retvals)EXCLUDED
|
@@ -26317,6 +26760,7 @@ XI lut_suche_multiple(char *such_str,int uniq,char *such_cmd,UINT4 *anzahl,UINT4
|
|
26317
26760
|
XI lut_suche_sort1(int anzahl,int *blz_base,int *zweigstellen_base,int *idx,int *anzahl_o,int **idx_op,int **cnt_op,int uniq)EXCLUDED
|
26318
26761
|
XI lut_suche_sort2(int anzahl,int *blz,int *zweigstellen,int *anzahl_o,int **blz_op,int **zweigstellen_op,int **cnt_o,int uniq)EXCLUDED
|
26319
26762
|
XI lut_blocks(int mode,char **lut_filename,char **lut_blocks_ok,char **lut_blocks_fehler)EXCLUDED
|
26763
|
+
XI lut_blocks_id(int mode,int *lut_filename,int *lut_blocks_ok,int *lut_blocks_fehler)EXCLUDED
|
26320
26764
|
XI kto_check_init_default(char *lut_name,int block_id)EXCLUDED
|
26321
26765
|
XI kto_check_default_keys(char ***keys,int *cnt)EXCLUDED
|
26322
26766
|
XI kto_check_set_default(char *key,char *val)EXCLUDED
|
@@ -26328,4 +26772,6 @@ DLL_EXPORT void *kc_alloc(int size,int *retval)EXCLUDED_VP
|
|
26328
26772
|
XI set_default_compression(int mode)EXCLUDED
|
26329
26773
|
XI lut_keine_iban_berechnung(char *iban_blacklist,char *lutfile,int set)EXCLUDED
|
26330
26774
|
XI pz_aenderungen_enable(int set)EXCLUDED
|
26775
|
+
XC kc_id2ptr(int handle,int *retval)EXCLUDED_S
|
26776
|
+
XI kc_id_free(int handle)EXCLUDED
|
26331
26777
|
#endif
|