konto_check 5.4.0 → 5.5.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|