home *** CD-ROM | disk | FTP | other *** search
- /*
- *
- * Wo1.0e.c
- *
- * Aztec C V3.4:
- * cc (+Irad:inlcude.pre) +C +D +L -E140 wo.c
- * ln wo.o -lml32 -lcl32
- *
- */
-
-
- /*
- * inlcudes and defines
- */
-
- /* I compile with pre-compiled include-files !
- #include <stdio.h>
- #include <ctype.h>
- #include <functions.h>
- #include <intuition/intuition.h>
- #include <intuition/intuitionbase.h>
- #include <devices/timer.h>
- #include <time.h>
- #include <devices/input.h>
- #include <libraries/dos.h>
- #include <graphics/gfxmacros.h>
- */
-
- #define ABOUT " Wo 1.0e © Heinzel 2.3.90 "
-
- #define MX IntuitionBase->ActiveScreen->MouseX
- #define MY IntuitionBase->ActiveScreen->MouseY
- #define a_w IntuitionBase->ActiveWindow
- #define MAXLEN 255
- #define KEYS sizeof(key)/sizeof(UBYTE) /* for codiere()/decodiere() */
- #define MAXI 500 /* maximal number of records (can be modified, of course) */
-
-
- /*
- * declarations
- */
-
- UBYTE key[] = {0,1,2,3,4,5,6,7,8,9,}; /* for password */
-
- struct Daten
- {
- char such_begriff[32];
- char name[32];
- char strasse[32];
- char ort[32];
- char tel[32];
- };
-
- struct Daten *person[MAXI];
- int zaehler = 0; /* for person[zaehler] */
-
- int vergleich(); /* for QuickSort() */
-
- FILE *faus, *fopen();
- struct FileHandle *fein;
- struct FileLock *lock;
- struct FileInfoBlock *eintrag;
- char *platz;
-
- struct IntuitionBase *IntuitionBase;
- struct GfxBase *GfxBase;
- long DosBase=0, j, k;
- long i=0;
-
- BOOL anderung = FALSE;
- /* has actual file been changed and must be saved ? */
-
- struct IntuiMessage *message;
- ULONG class; USHORT code;
-
- struct MsgPort *timerport = NULL; /* for timer-clock */
- long openerror = 1;
- struct timerequest timereq;
- ULONG zmem, tt =0;
- long diff = 0;
-
-
- struct Preferences prefs; /* for movemouse() */
- struct RastPort *rp;
- struct Screen *screen;
- struct Window *w, *offne_win, *list_win, *input_win, *sesam_win;
-
- char liste[MAXI][33]; /* for list() */
- char Date_Buffer[10] ;
-
- UBYTE DefString[30];
- UBYTE Undo [30];
- struct StringInfo TexString = /* for text in text-gadgets */
- {DefString,Undo,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
-
- UBYTE DefString2[30] = ":wo/wo.file"; /* in offne_file-window */
- UBYTE Undo2[30];
- struct StringInfo TexString2 =
- {DefString2,Undo2,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
-
- UBYTE DefString3[30]; /* in input-window */
- UBYTE Undo3[30];
- struct StringInfo Input_TexString =
- {DefString3,Undo3,0,30,0,0,0,0, 0,0, NULL, 0, NULL};
-
- UBYTE DefString4[70]; /* in sesam-window */
- UBYTE Undo4[70];
- struct StringInfo sesam_TexString =
- {DefString4,Undo4,0,70,0,0,0,0, 0,0, NULL, 0, NULL};
-
- char alert1[] = {"\0\170\26 W r o n g P a s s w o r d , S u c k e r !\0\0"};
-
- /*
- * Borders
- */
-
- SHORT Pairs1[] = /* from Text Gadget Border */
- {38,36, 250,36, 250,51, 38,51, 38,36 };
- SHORT Pairs3[] = /* ... in offne_file */
- {21,5, 231,5, 231,21, 21,21, 21,5 };
- SHORT Pairs4[] = /* ... in input_window */
- {38,16, 250,16, 250,31, 38,31, 38,16 };
-
- struct Border StrBorder5 =
- {-17,-11, 1,0,JAM1, 5, Pairs4, NULL };
- struct Border StrBorder4 =
- {0,0, 1,0,JAM1, 5, Pairs4, NULL };
- struct Border StrBorder3 =
- {0,0, 1,0,JAM1, 5, Pairs3, NULL };
- struct Border StrBorder =
- {0,0, 1,0,JAM1, 5, Pairs1, NULL };
-
-
- /*
- * IntuiTexts
- */
-
- BOOL ergebnis = FALSE;
-
- struct IntuiText postext1 =
- {0,1,JAM2,9,4,NULL,(UBYTE *)"Yo ",NULL };
- struct IntuiText negtext1 =
- {0,1,JAM2,9,4,NULL,(UBYTE *)" NO !",NULL };
- struct IntuiText text=
- {0,1,JAM1,9,6,NULL,(UBYTE *)" No reords ! "};
- struct IntuiText text2=
- {0,1,JAM1,9,6,NULL,(UBYTE *)NULL};
- struct IntuiText text3=
- {0,1,JAM1,6,6,NULL,(UBYTE *)" No current record !"};
- struct IntuiText text4=
- {0,1,JAM1,9,6,NULL,(UBYTE *)" DELETE records ?"};
- struct IntuiText text5=
- {0,1,JAM1,9,6,NULL,(UBYTE *)" Save modified file ?"};
-
- struct IntuiText yo_str =
- {1,0,JAM2,49,2,NULL,(UBYTE *)"Yo !",NULL };
-
- struct IntuiText del_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Del ",0};
- struct IntuiText neu_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" New ",0};
- struct IntuiText print_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Print ",0};
- struct IntuiText abbruch_str =
- {1,0,JAM1,25,2,0,(UBYTE *)"CANCEL",0};
- struct IntuiText list_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" List ",0};
- struct IntuiText input_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Input ",0};
- struct IntuiText speicher_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Save ",0};
- struct IntuiText lade_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Open ",0};
- struct IntuiText edit_str =
- {3,0,JAM2,1,0,0,(UBYTE *)" Edit ",0};
-
- struct IntuiText yes_str =
- {1,0,JAM1,14,2,0,NULL,0};
- struct IntuiText no_str =
- {1,0,JAM1,25,2,0,(UBYTE *)"Cancel",0};
-
-
- struct IntuiText vor_str =
- {1,0,JAM1,4,0,0,(UBYTE *)"--->>>",0};
- struct IntuiText zurueck_str =
- {1,0,JAM1,4,0,0,(UBYTE *)"<<<---",0};
- struct IntuiText namen_str[13] =
- {
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0},
- {1,0,JAM2,3,1,0,NULL,0}
- };
-
- /*
- * Gadgets
- */
-
- struct Gadget yo_gad =
- {NULL, 66,25,120,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&yo_str,0,0, 2, 0};
- struct Gadget sesam_gad =
- {&yo_gad, 26,9,200,12, GADGHCOMP, RELVERIFY, STRGADGET,
- NULL, 0, NULL, 0, (APTR)&sesam_TexString, 1,0};
-
- struct Gadget input_tex_gad =
- {NULL, 45,20,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
- NULL, 0, NULL, 0, (APTR)&Input_TexString, 1,0};
-
- struct Gadget zurueck_gad =
- {NULL, 74,170,54,8, GADGHBOX|GADGDISABLED,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&zurueck_str,0,0, 21, 0};
- struct Gadget vor_gad =
- {&zurueck_gad, 6,170,54,8, GADGHBOX|GADGDISABLED,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&vor_str,0,0, 20, 0};
-
- struct Gadget namen_gad[13] =
- {
- {&vor_gad, 10, 12,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[0], 0,0,0, 0},
- {&namen_gad[0], 10, 22,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[1], 0,0,1, 0},
- {&namen_gad[1], 10, 32,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[2], 0,0,2, 0},
- {&namen_gad[2], 10, 42,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[3], 0,0,3, 0},
- {&namen_gad[3], 10, 52,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[4], 0,0,4, 0},
- {&namen_gad[4], 10, 62,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[5], 0,0,5, 0},
- {&namen_gad[5], 10, 72,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[6], 0,0,6, 0},
- {&namen_gad[6], 10, 82,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[7], 0,0,7, 0},
- {&namen_gad[7], 10, 92,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[8], 0,0,8, 0},
- {&namen_gad[8], 10,102,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[9], 0,0,9, 0},
- {&namen_gad[9], 10,112,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[10],0,0,10,0},
- {&namen_gad[10],10,122,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[11],0,0,11,0},
- {&namen_gad[11],10,132,110,10, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,NULL,0,&namen_str[12],0,0,12,0}
- };
-
-
- struct Gadget no_gad = /* in offne_file-window */
- {NULL, 20,27,100,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&no_str,0,0, 3, 0};
- struct Gadget yes_gad =
- {&no_gad, 140,27,100,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&yes_str,0,0, 2, 0};
- struct Gadget file_gad =
- {&yes_gad, 26,9,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
- NULL, 0, NULL, 0, (APTR)&TexString2, 1,0};
-
- struct Gadget del_gad =
- {NULL, 119,140,42,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&del_str,0,0, 10, 0};
- struct Gadget neu_gad =
- {&del_gad, 161,140,42,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&neu_str,0,0, 9, 0};
- struct Gadget edit_gad =
- {&neu_gad, 127,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&edit_str,0,0, 8, 0};
- struct Gadget lade_gad =
- {&edit_gad, 177,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&lade_str,0,0, 7, 0};
- struct Gadget speicher_gad =
- {&lade_gad, 227,126,50,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&speicher_str,0,0, 6, 0};
- struct Gadget input_gad =
- {&speicher_gad, 69,126,58,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&input_str,0,0, 5, 0};
- struct Gadget list_gad =
- {&input_gad, 11,126,58,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&list_str,0,0, 4, 0};
- struct Gadget abbruch_gad =
- {&list_gad, 12,140,99,12, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&abbruch_str,0,0, 3, 0};
- struct Gadget print_gad =
- {&abbruch_gad, 203,140,74,8, GADGHBOX,GADGIMMEDIATE|RELVERIFY, BOOLGADGET,
- NULL,0,&print_str,0,0, 2, 0};
- struct Gadget tex_gad =
- {&print_gad, 45,40,200,12, GADGHCOMP, STRINGCENTER|RELVERIFY, STRGADGET,
- NULL, 0, NULL, 0, (APTR)&TexString, 1,0};
-
- struct Requester request = /* look at function schein-request() */
- {NULL,-1,-1,1,1,0,0,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL};
-
-
- /*
- * Windows
- */
-
- struct NewWindow nw =
- {
- 40,20,291,176, 0,1,
- MOUSEBUTTONS|GADGETDOWN|GADGETUP|RAWKEY|CLOSEWINDOW,
- ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
- &tex_gad,
- NULL,
- (UBYTE *) ABOUT,
- NULL,
- NULL,
- 0,0,0,0,
- WBENCHSCREEN
- };
-
- struct NewWindow nw3 = /* name-window */
- {
- 345,20,260,55, 0,1,
- GADGETDOWN|GADGETUP,
- ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH,
- &file_gad,
- NULL,
- NULL,
- NULL,
- NULL,
- 0,0,0,0,
- WBENCHSCREEN
- };
-
- struct NewWindow nw4 = /* list-window */
- {
- 345,5,145,194, 0,1,
- GADGETDOWN|GADGETUP|CLOSEWINDOW|MOUSEBUTTONS,
- ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
- &namen_gad[12],
- NULL,
- (UBYTE *) " List ",
- NULL,
- NULL,
- 0,0,0,0,
- WBENCHSCREEN
- };
-
- struct NewWindow nw5 = /* input-window */
- {
- 345,20,291,50, 0,1,
- GADGETDOWN|GADGETUP|CLOSEWINDOW,
- ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH|WINDOWCLOSE,
- &input_tex_gad, /* Gad */
- NULL,
- NULL,
- NULL,
- NULL,
- 0,0,0,0,
- WBENCHSCREEN
- };
-
- struct NewWindow nw6 = /* sesam-window */
- {
- 345,80,260,55, 0,1,
- GADGETUP|GADGETDOWN,
- ACTIVATE|RMBTRAP|GIMMEZEROZERO|WINDOWDRAG|WINDOWDEPTH,
- &sesam_gad,
- NULL,
- (UBYTE *) " password: ",
- NULL,
- NULL,
- 0,0,0,0,
- WBENCHSCREEN
- };
-
- struct NewWindow new_inf_win = /* info_window */
- {0,90,640,28, 1,2, NULL, ACTIVATE,
- NULL,NULL,NULL, NULL,
- NULL, 20,20,640,256, WBENCHSCREEN
- };
-
-
- /*
- * master control program
- */
-
- main(argc,argv)
- short argc;
- char *argv[];
- {
- if( IntuitionBase->ActiveScreen->Width<639 ) ende(7);
-
- if(!(DosBase=(long)OpenLibrary("dos.library",0))) ende(1);
- if(!(GfxBase = (struct GfxBase *)OpenLibrary("graphics.library",0))) ende(2);
- if(!(IntuitionBase = (struct IntuitionBase *)OpenLibrary("intuition.library",0))) ende(3);
-
- GetPrefs(&prefs,(long)sizeof(struct Preferences));
-
- if(!(timerport = CreatePort("Timer Port",0L))) ende(4);
- if((openerror = OpenDevice(TIMERNAME,UNIT_VBLANK,(char *)&timereq,0L))!=0) ende(4);
-
- if(argc>1) strcpy(DefString2,argv[1]);
-
- draw();
-
- start_timer();
- zmem = time(tt)-diff;
- print_time(diff);
-
- for(i=0;i<MAXI;i++) person[i] = 0;
-
- offne_file(0);
- s();
-
- loop(); /* THE main-loop */
- } /* End main() */
-
- loop()
- {
- for(;;)
- {
- Wait((1<<w->UserPort->mp_SigBit) | (1<<timerport->mp_SigBit));
-
- while(message = (struct IntuiMessage *)GetMsg(w->UserPort))
- {
- class = message->Class;
- code = message->Code;
- ReplyMsg(message);
- switch (class)
- {
- case CLOSEWINDOW: ende(0);
- case GADGETUP: do_gadget_text(message, w); break;
- case GADGETDOWN: do_gadgets_bool(message, w); break;
- case RAWKEY: if(code==80) ActivateGadget(&tex_gad,w,NULL); break;
- } /* End switch */
- } /* End while1 */
-
- while(GetMsg(timerport))
- {start_timer();
- diff=time(tt)-zmem;
- print_time(diff);
- } /* end while2 */
-
- } /* end for */
- } /* End schleife() */
-
- do_gadget_text (mes, win) /* execute text-gadget */
- struct IntuiMessage *mes;
- struct Window *win;
- {
- struct Gadget *igad;
- int gadgid;
-
- igad = (struct Gadget *) mes->IAddress;
- gadgid = igad->GadgetID;
- switch(gadgid)
- {
- case 1: suchen(DefString); break;
- };
- }
-
- do_gadgets_bool (mes, win) /* execute BOOL-gadgets */
- struct IntuiMessage *mes;
- struct Window *win;
- {
- struct Gadget *igad;
- int gadgid;
-
- igad = (struct Gadget *) mes->IAddress;
- gadgid = igad->GadgetID;
- switch(gadgid)
- {
- case 2: drucke(DefString); break;
- case 3: ende(0);
- case 4: list(); break;
- case 5: input(0); break; /* = new input */
- case 7: if((anderung==TRUE)&&(zaehler>0)) /*load*/
- {movemouse(190,38);
- ergebnis = AutoRequest(NULL,&text5,&postext1,&negtext1,NULL,NULL,260,50);
- if(ergebnis==TRUE) offne_file(1);
- /* if file has been saved: Request: Save ? */
- }
- offne_file(0); break;
- case 6: if(zaehler==0)
- {movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
- movemouse(w->LeftEdge+150,w->TopEdge+130); break;}
- offne_file(1); break; /*save*/
- case 8: input(1); break; /* = edit record */
- case 9: neu(); break;
- case 10: del(); break;
- };
- }
-
-
- /*
- * the functions
- */
-
- status(was) /* shows status */
- char *was;
- {
- Move(rp,16,25); Text(rp,was,25);
- }
-
- s()
- {status("Click gadget ... ");}
-
- de()
- {Delay(50L); s();}
-
- schein_request(an) /* Requester: mouse-clicks won't be buffered ! */
- int an; /* 1 = onn, 0 = off */
- {
- if(an==1)
- {InitRequester(&request);
- Request(&request,w);}
- else
- EndRequest(&request,w);
- }
-
- draw() /* Opening the main-window */
- {
- if(!(w = (struct Window *)OpenWindow(&nw))) ende(5);
-
- rp = w->RPort;
- SetRast(rp,2);
-
- SetAPen(rp,2);SetBPen(rp,1);Move(rp,16,12); Text(rp,"Status:",7);
-
- SetAPen(rp,0);
- RectFill(rp,12,140,110,151); /* blue background at CANCEL-gadget */
-
- SetAPen(rp,3);SetBPen(rp,1);
- Move(rp,16,68); Text(rp," Number of records: ",20);
- Move(rp,16,85); Text(rp," Name:",7);
- Move(rp,16,95); Text(rp,"Street:",7);
- Move(rp,16,105);Text(rp," Town:",7);
- Move(rp,16,115);Text(rp," Phone:",7);
-
-
- SetAPen(rp,1);SetBPen(rp,2);
- DrawBorder(rp,&StrBorder,0,0);
- RefreshGadgets(&tex_gad,w,NULL); /* draw gadgets */
- print_anzahl();
- }
-
- drucke(wen) /* print address */
- char *wen;
- {
- char john[30];
- UBYTE *reg2 = 12570624;
- UBYTE a;
- a = *reg2&1;
-
- if(zaehler==0) {movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
- goto close_it;}
-
- for(i=0;i<zaehler;i++)
- { if( my_strcmp(wen,person[i]->such_begriff)==NULL)
- {
- strcpy(john," Print <");
- strcat(john,person[i]->such_begriff);
- strcat(john,"> ? ");
- (UBYTE *) text2.IText = (UBYTE *)john;
- movemouse((strlen(john)*10)-50,38);
- ergebnis = AutoRequest(NULL,&text2,&postext1,&negtext1,NULL,NULL,strlen(john)*10+5,50);
- if(ergebnis == FALSE) goto close_it;
-
- if(a==1) {status("Printer off_line ! "); de(); goto close_it; }
- if((faus=fopen("par:","w"))==NULL)
- {status("No parallel.device ! "); de(); return(0);}
- status("Printing address. ");
- fputs(person[i]->name,faus);
- fputs("\n",faus);
- fputs(person[i]->strasse,faus);
- fputs("\n",faus);
- fputs(person[i]->ort,faus);
- fputs("\n",faus);
- fputs(person[i]->tel,faus);
- fputs("\n\n",faus);
- if(faus) fclose(faus);
- s();
- return(1);
- }
- }
-
- movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
-
- close_it: movemouse(w->LeftEdge+150,w->TopEdge+130); return(0);
-
- } /* end drucke() */
-
-
- open_file(welches) /* read data-file into memory */
- UBYTE welches[30];
- {
- register char *z, *hilf;
- long number;
-
- status("Opening File ! ");
- if((eintrag = AllocMem(sizeof(struct FileInfoBlock),0L))==NULL) ende(6);
- if(( lock = (struct FileLock *) Lock(welches,ACCESS_READ))==NULL)
- {kein_wofile(); return(0);}
- if(Examine(lock,eintrag)==NULL)
- {kein_wofile(); return(0);}
- UnLock(lock);
-
- if((platz = AllocMem(eintrag->fib_Size,0L))==NULL)
- {kein_wofile(); ende(6);}
- if((fein=Open(welches,MODE_OLDFILE))==NULL)
- {kein_wofile(); return(0);}
-
- number = Read(fein,platz,eintrag->fib_Size);
- if(fein) Close(fein);
-
- get_sesam();
- if(DefString4[0]!=0) {compute(DefString4);
- decodiere(platz,number);
- strcpy(DefString4,"\0"); }
-
- SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
-
- strcpy(DefString,"\0");
- RefreshGadgets(&tex_gad,w,NULL);
-
- if(zaehler>0)
- { for(i=0;i<zaehler;i++)
- { if(person[i]) FreeMem(person[i],sizeof(struct Daten));
- person[i] = 0;
- }
- }
- for(i=0;i<MAXI;i++) person[i] = 0;
- zaehler = 0;
-
- /* scan and modify in memory */
-
- z = platz; /* = begin of data in memory */
-
- if(*z!='{') mach_reset();
-
- for(;;)
- {
- for(;*z!='~' && *z!='{';z++) ;
- if(*z=='~') break; /* end of list -> break */
-
- if((person[zaehler] = AllocMem(sizeof(struct Daten),0L))==NULL) break;
- z+=1;
- hilf = z;
- for(;*z!='[';z++) ;
- *(z-1) = '\0';
- strcpy(person[zaehler]->such_begriff,hilf);
- z+=1;
- hilf = z;
- for(;*z!='[';z++) ;
- *(z-1) = '\0';
- strcpy(person[zaehler]->name,hilf);
- z+=1;
- hilf = z;
- for(;*z!='[';z++) ;
- *(z-1) = '\0';
- strcpy(person[zaehler]->strasse,hilf);
- z+=1;
- hilf = z;
- for(;*z!='[';z++) ;
- *(z-1) = '\0';
- strcpy(person[zaehler]->ort,hilf);
- z+=1;
- hilf = z;
- for(;*z!=']';z++) ;
- *(z) = '\0';
- strcpy(person[zaehler]->tel,hilf);
-
- zaehler += 1;
- }
-
- anderung = FALSE;
- if(eintrag) FreeMem(eintrag,sizeof(struct FileInfoBlock));
- if(platz) FreeMem(platz,eintrag->fib_Size);
-
- print_anzahl();
-
- RefreshGadgets(&tex_gad,w,NULL);
-
- s();
- } /* End open_file() */
-
- kein_wofile() /* error during read-in data into memory */
- {
- if(lock) {UnLock(lock); lock = NULL;}
- if(platz) {FreeMem(platz,eintrag->fib_Size); platz = NULL;}
- if(eintrag) {FreeMem(eintrag,sizeof(struct FileInfoBlock)); eintrag=NULL;}
- status("File - Error ! "); Delay(50L);
- status("Load - Mode ... ");
- }
-
- mach_reset() /* wrong password: Good By ! */
- {
- SetTaskPri(FindTask(0),127);
- DisplayAlert(RECOVERY_ALERT,&alert1[0],50);
- Forbid(); Disable();
- sys_info(3,"Reset your system !!!",200);
- reset();
- }
-
- reset() /* wrong password: reset ! */
- {
- #asm
- move $0,34
- #endasm
- }
-
- my_strcmp(t1,t2)
- char *t1,*t2;
- {
- register unsigned char c1, c2;
- register COUNT count;
- for(count=0; count<=strlen(t1); count++)
- {
- c1=t1[count];
- c2=t2[count];
- if(c1>180) c1=c1-131;
- if(c2>180) c2=c2-131;
- if(c2>=65 && c2<=90) c2 +=32;
- if(c1>=65 && c1<=90) c1 +=32;
- if(c1<c2) return(-1);
- if(c1>c2) return(1);
- }
- return(0);
- }
-
- suchen(wen) /* searches for term and and gives you suitable address */
- char *wen;
- {
- for(i=0;i<zaehler;i++)
- { if( my_strcmp(wen,person[i]->such_begriff)==NULL)
- { SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
-
- Move(rp,80,85); Text(rp,person[i]->name,strlen(person[i]->name));
- Move(rp,80,95); Text(rp,person[i]->strasse,strlen(person[i]->strasse));
- Move(rp,80,105); Text(rp,person[i]->ort,strlen(person[i]->ort));
- Move(rp,80,115); Text(rp,person[i]->tel,strlen(person[i]->tel));
- return(1);}
- }
- status("No matching record ! "); de(); return(0);
- } /* end suchen() */
-
- start_timer() /* initializing of timer-clock */
- {
- timereq.tr_time.tv_secs = 0;
- timereq.tr_time.tv_micro = 999500;
- timereq.tr_node.io_Command = TR_ADDREQUEST;
- timereq.tr_node.io_Flags = 0;
- timereq.tr_node.io_Error = 0;
- timereq.tr_node.io_Message.mn_ReplyPort = timerport;
-
- SendIO((char *) &timereq.tr_node);
- }
-
- print_time(diff) /* prints time on screen */
- long diff;
- {
- char s[8];
- long h,m;
- h=diff/3600;
- diff -=h*3600;
- m=diff/60;
- diff -=m*60;
-
- if(h<10)
- {s[0] = '0'; s[1] = '0'+h;}
- else {s[0] = '0'+(h/10); s[1] = '0'+(h-((h/10)*10));}
-
- s[2] = ':';
-
- if(m<10)
- {s[3] = '0'; s[4] = '0'+m;}
- else {s[3] = '0'+(m/10); s[4] = '0'+(m-((m/10)*10));}
-
- s[5] = ':';
-
- if(diff<10)
- {s[6] = '0'; s[7] = '0'+diff;}
- else {s[6] = '0'+(diff/10); s[7] = '0'+(diff-((diff/10)*10));}
-
- s[8] = '\0';
-
- Move(rp,210,12);
- Text(rp,&s,8L);
- }
-
- offne_file(knoff) /* load/save a file */
- short knoff;
- {
- struct RastPort *rp_name;
- struct IntuiMessage *message2;
- ULONG class2; USHORT code2;
- struct Gadget *igad2;
- int gadgid2;
-
- schein_request(1); /*an*/
-
- if(knoff==1) { status("Save - Mode ... ");
- nw3.Title = (UBYTE *)" File-Name (Save)";
- yes_str.IText = (UBYTE *)" Save";}
- if(knoff==0) { status("Load - Mode ... ");
- nw3.Title = (UBYTE *)" File-Name (Load)";
- yes_str.IText = (UBYTE *)" Load";}
-
- if(!(offne_win = (struct Window *)OpenWindow(&nw3))) {sys_info(3,"No List-WINDOW !",0); return(0);}
- rp_name = offne_win->RPort;
- SetRast(rp_name,2);
- SetAPen(rp_name,0);
- movemouse(a_w->LeftEdge+230,a_w->TopEdge+42);
-
- RectFill(rp_name,20,27,119,38);
- RectFill(rp_name,140,27,239,38);
- RefreshGadgets(&file_gad,offne_win,NULL);
- DrawBorder(rp_name,&StrBorder3,0,0);
- ActivateGadget(&file_gad,offne_win,NULL);
-
- for(;;)
- {
- Wait(1<<offne_win->UserPort->mp_SigBit);
- while(message2 = (struct IntuiMessage *)GetMsg(offne_win->UserPort))
- {
- class2 = message2->Class;
- code2 = message2->Code;
- ReplyMsg(message2);
- igad2 = (struct Gadget *) message2->IAddress;
- gadgid2 = igad2->GadgetID;
- switch (class2)
- {
- case GADGETDOWN:
- switch(gadgid2)
- {
- case 2: if(knoff==0) {if(open_file(DefString2)!=0) goto sense; } /*yes */
- if(knoff==1) {if(speichern(DefString2)!=0) goto sense; }
- ActivateGadget(&file_gad,offne_win,NULL); break;
- case 3: goto sense; break; /* no */
- };
- case GADGETUP:
- switch(gadgid2)
- {case 1: if(knoff==0) {if(open_file(DefString2)!=0) goto sense; } /*yes */
- if(knoff==1) {if(speichern(DefString2)!=0) goto sense; }
- ActivateGadget(&file_gad,offne_win,NULL); break;
- };
- };
- } /* end while */
- } /* end for */
-
- sense:
- schein_request(0); /*off*/
- if(offne_win) {CloseWindow(offne_win); offne_win=NULL;
- s();
- movemouse(w->LeftEdge+150,w->TopEdge+130);
- }
- } /* End offne_file() */
-
- int vergleich(a,b) /* for quicksort() */
- char *a, *b;
- {
- return(my_strcmp(a,b));
- }
-
- list() /* shows you list of terms (alphabetical), click them ! */
- {
- struct RastPort *rp_list;
- struct IntuiMessage *message2;
- ULONG class2; USHORT code2;
- struct Gadget *igad2;
- int gadgid2;
- register int j=0, akt=0;
-
- schein_request(1); /*an*/
- status("List - Mode ... ");
-
- for(i=0;i<MAXI;i++) strcpy(liste[i],"\0");
-
- if(zaehler==0) {movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
- goto close_it_2;}
-
- if(!(list_win = (struct Window *)OpenWindow(&nw4))) {sys_info(3,"No List-WINDOW !",0); return(0);}
- rp_list = list_win->RPort;
- SetRast(rp_list,2);
- SetAPen(rp_list,3); SetBPen(rp_list,1); SetDrMd(rp_list,JAM2);
- movemouse(a_w->LeftEdge+30,a_w->TopEdge+187);
-
- for(i=0;i<zaehler;i++)
- strcpy(liste[i],person[i]->such_begriff);
-
- qsort(liste,zaehler,33,vergleich);
-
- j = ((zaehler-1)/13); /* how many whole pages ? (13 records/page possible) */
-
- if(zaehler<=13)
- { for(i=0;i<zaehler;i++) (char *)namen_str[i].IText = liste[i];
- Move(rp_list,6,156); Text(rp_list,"(end) ",6);
- for(i=12;i>=zaehler;i--) namen_gad[i].Flags |= GADGDISABLED;
- }
- else {for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[i];
- OnGadget(&vor_gad,list_win,NULL); akt=0;
- Move(rp_list,6,156); Text(rp_list,"(more)",6);}
-
- col(akt,-2);
- sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
-
- for(;;)
- {
- Wait(1<<list_win->UserPort->mp_SigBit);
- while(message2 = (struct IntuiMessage *)GetMsg(list_win->UserPort))
- {
- class2 = message2->Class;
- code2 = message2->Code;
- ReplyMsg(message2);
- igad2 = (struct Gadget *) message2->IAddress;
- gadgid2 = igad2->GadgetID;
- switch (class2)
- {
- case MOUSEBUTTONS: if(code2==MENUDOWN) goto close_it_1; break;
- case CLOSEWINDOW: goto close_it_1;
- case GADGETDOWN:
- if(gadgid2>=0 && gadgid2<=12) {such(gadgid2);col(akt,gadgid2);} break;
- case GADGETUP:
- if(gadgid2>=0 && gadgid2<=12) {RefreshGadgets(&namen_gad[12],list_win,NULL);}
- if(gadgid2==20) /*go on*/
- {akt = akt+1;
- for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[(akt*13)+i];
- SetRast(rp_list,2);
- OnGadget(&zurueck_gad,list_win,NULL);
- if(akt==j) { for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags |= GADGDISABLED;
- vor_gad.Flags |= GADGDISABLED;
- Move(rp_list,6,156); Text(rp_list,"(end) ",6);}
- else {Move(rp_list,6,156); Text(rp_list,"(more)",6);}
- sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
- col(akt,-1);
- }
- if(gadgid2==21) /*go back*/
- { for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags &= ~GADGDISABLED;
- akt = akt-1;
- for(i=0;i<13;i++) (char *)namen_str[i].IText = liste[(akt*13)+i];
- SetRast(rp_list,2);
- OnGadget(&vor_gad,list_win,NULL);
- Move(rp_list,6,156); Text(rp_list,"(more)",6);
- if(akt==0) zurueck_gad.Flags |= GADGDISABLED;
- sprintf(Date_Buffer,"%d/%d",akt+1,j+1); Move(rp_list,a_w->Width-14-(strlen(Date_Buffer)*7),156); Text(rp_list,Date_Buffer,strlen(Date_Buffer));
- col(akt,-1);
- }
- };/* switch class2 */
- } /* end while */
- } /* end for */
-
- close_it_1:
- for(i=12;i>=zaehler-(j*13);i--) namen_gad[i].Flags &= ~GADGDISABLED;
- zurueck_gad.Flags |= GADGDISABLED;
- vor_gad.Flags |= GADGDISABLED;
- if(list_win) {CloseWindow(list_win); list_win=NULL;}
-
- close_it_2:
- schein_request(0); /*aus*/
- s();
- movemouse(w->LeftEdge+150,w->TopEdge+130);
- } /* end list() */
-
- such(a)
- short a;
- {
- strcpy(DefString,(char *)namen_str[a].IText);
- RefreshGadgets(&tex_gad,w,NULL);
- suchen((char *)namen_str[a].IText);
- }
-
- col(page,num) /* changes color of activated tracing term */
- short page;
- short num;
- {
- static short st_page=-1;
- static short st_num=-1;
- short i;
-
- if(num==-2)
- { for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;}
- st_page=-1; st_num=-1; }
- if(num==-1)
- { if(st_page==page) {namen_str[st_num].FrontPen=2; namen_str[st_num].BackPen=1;}
- else for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;} }
- if(num<0) RefreshGadgets(&namen_gad[12],list_win,NULL);
-
- if(num>=0)
- { st_page=page; st_num=num;
- for(i=0;i<=12;i++) {namen_str[i].FrontPen=1; namen_str[i].BackPen=2;}
- namen_str[st_num].FrontPen=2; namen_str[st_num].BackPen=1; }
- } /* end col() */
-
- input(edit) /* new input (edit=0), modify record (edit=1) */
- short edit;
- {
- struct RastPort *rp_input;
- struct IntuiMessage *message2;
- ULONG class2; USHORT code2;
- struct Gadget *igad2;
- int gadgid2;
- short what = 1;
-
- schein_request(1); /*an*/
-
- if(edit==1)
- {
- status("Edit - Mode ... ");
- for(i=0;i<zaehler;i++)
- if( my_strcmp(DefString,person[i]->such_begriff)==NULL)
- {strcpy(DefString3,person[i]->such_begriff);
- nw5.Title = (UBYTE *)" Edit "; goto weiter;}
- movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
- goto close_in;
- }
-
- if(edit==0) {nw5.Title = (UBYTE *)" Input ";
- status("Input - Mode ... ");}
- weiter:
- if(!(input_win = (struct Window *)OpenWindow(&nw5))) { sys_info(3,"No Input/Edit-WINDOW !",0); return(0);}
- rp_input = input_win->RPort;
-
- SetRast(rp_input,2); movemouse(a_w->LeftEdge+10,a_w->TopEdge+5);
-
- DrawBorder(rp_input,&StrBorder4,0,0);
- SetAPen(rp_input,1); SetBPen(rp_input,2); SetDrMd(rp_input,JAM2);
- Move(rp_input,5,10); Text(rp_input,"Tracing term: ",16);
-
- if(edit==0) {strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
- strcpy(DefString3,"\0");
- SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);}
-
-
- for(;;)
- {
- RefreshGadgets(&input_tex_gad,input_win,NULL);
- ActivateGadget(&input_tex_gad,input_win,NULL);
-
- Wait(1<<input_win->UserPort->mp_SigBit);
-
- while(message2 = (struct IntuiMessage *)GetMsg(input_win->UserPort))
- {
- class2 = message2->Class;
- code2 = message2->Code;
- ReplyMsg(message2);
- igad2 = (struct Gadget *) message2->IAddress;
- gadgid2 = igad2->GadgetID;
- switch (class2)
- {
- case CLOSEWINDOW: goto close_in;
- case GADGETDOWN:
- switch(gadgid2)
- {case 1: break;
- };
- case GADGETUP:
- switch(gadgid2)
- {
- case 1:
-
- if(what==1)
- {
-
- if(edit==0)
- {if((person[zaehler] = AllocMem(sizeof(struct Daten),0L))==NULL) return(0);
- strcpy(person[zaehler]->such_begriff,DefString3);
- strcpy(DefString,DefString3);
- strcpy(DefString3,"\0");
- }
-
- if(edit==1)
- {
- strcpy(person[i]->such_begriff,DefString3);
- strcpy(DefString,DefString3);
- strcpy(DefString3,person[i]->name);
- }
-
- RefreshGadgets(&tex_gad,w,NULL);
- Move(rp_input,5,10); Text(rp_input,"Name/First-Name:",16);
- what = 2;
- break;
- }
-
- if(what==2)
- {
- Move(rp,80,85); Text(rp,DefString3,strlen(DefString3));
-
- if(edit==0) {strcpy(person[zaehler]->name,DefString3); strcpy(DefString3,"\0");}
-
- if(edit==1)
- {strcpy(person[i]->name,DefString3); strcpy(DefString3,person[i]->strasse);
- suchen((char *)DefString);}
-
- Move(rp_input,5,10); Text(rp_input,"Street: ",16);
-
- what = 3;
- break;
- }
-
- if(what==3)
- {
- Move(rp,80,95); Text(rp,DefString3,strlen(DefString3));
-
- if(edit==0) {strcpy(person[zaehler]->strasse,DefString3); strcpy(DefString3,"\0");}
- if(edit==1)
- {strcpy(person[i]->strasse,DefString3); strcpy(DefString3,person[i]->ort);
- suchen((char *)DefString);}
-
-
- Move(rp_input,5,10); Text(rp_input,"Town: ",16);
-
- what = 4;
- break;
- }
-
- if(what==4)
- {
- Move(rp,80,105); Text(rp,DefString3,strlen(DefString3));
-
- if(edit==0) {strcpy(person[zaehler]->ort,DefString3); strcpy(DefString3,"\0");}
- if(edit==1)
- {strcpy(person[i]->ort,DefString3); strcpy(DefString3,person[i]->tel);
- suchen((char *)DefString);}
-
- Move(rp_input,5,10); Text(rp_input,"Phone-Nr.: ",16);
-
- what = 5;
- break;
- }
-
- if(what==5)
- {
- Move(rp,80,115); Text(rp,DefString3,strlen(DefString3));
-
- if(edit==0) {strcpy(person[zaehler]->tel,DefString3);
- strcpy(DefString3,"\0");
- Move(rp_input,5,10); Text(rp_input,"Tracing term:",13);
- SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
- strcpy(DefString,"\0");
- RefreshGadgets(&tex_gad,w,NULL);
- zaehler +=1;
- print_anzahl();
- what = 1; }
- if(edit==1) {strcpy(person[i]->tel,DefString3);
- suchen((char *)DefString);
- goto close_in;}
- break;
- }
- };/*switch gadgid*/ break;
-
- };/*switch messageclass*/
- } /* end while */
- } /* end for */
-
- close_in:
- anderung = TRUE;
- if(input_win) {CloseWindow(input_win); input_win=NULL;}
- if(edit==0){SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
- strcpy(DefString,"\0");
- RefreshGadgets(&tex_gad,w,NULL);}
- schein_request(0); /*aus*/
- s();
- movemouse(w->LeftEdge+150,w->TopEdge+130);
- } /* end input() */
-
-
- speichern(speicher_string) /* the saving */
- UBYTE speicher_string[30];
- {
- char *hilf;
- LONG anzahl = 0;
- int handle;
-
- status("Saving file ... ");
-
- if((handle=creat(speicher_string,0))==-1)
- {status("Saving-Error !!! "); de(); return(0);}
-
- for(i=0;i<zaehler;i++)
- {
- anzahl = anzahl + strlen(person[i]->such_begriff)
- + strlen(person[i]->name)
- + strlen(person[i]->strasse)
- + strlen(person[i]->ort)
- + strlen(person[i]->tel)
- + 10; /* die Klammern */
- }
- anzahl += 2; /* for ~ und \0 */
-
- if((platz = AllocMem(anzahl,0L))==NULL)
- {status("Saving-Error !!! "); de(); return(0);}
-
- hilf = platz;
-
- for(i=0;i<zaehler;i++)
- {
- strcpy(hilf,"{");
- hilf+=1;
-
- strcat(hilf,person[i]->such_begriff);
- hilf+=strlen(person[i]->such_begriff);
- strcat(hilf,"}[");
- hilf+=2;
-
- strcat(hilf,person[i]->name);
- hilf+=strlen(person[i]->name);
- strcat(hilf,"][");
- hilf+=2;
-
- strcat(hilf,person[i]->strasse);
- hilf+=strlen(person[i]->strasse);
- strcat(hilf,"][");
- hilf+=2;
-
- strcat(hilf,person[i]->ort);
- hilf+=strlen(person[i]->ort);
- strcat(hilf,"][");
- hilf+=2;
-
- strcat(hilf,person[i]->tel);
- hilf+=strlen(person[i]->tel);
- strcat(hilf,"]");
- hilf+=1;
- }
-
- strcat(hilf,"~\0");
-
- get_sesam();
- if(DefString4[0]!=0) {compute(DefString4);
- codiere(platz,anzahl);
- strcpy(DefString4,"\0"); }
-
- write(handle,platz,anzahl);
- close(handle);
- if(platz) FreeMem(platz,anzahl);
-
- anderung = FALSE; movemouse(w->LeftEdge+150,w->TopEdge+130);
-
- DisplayBeep(NULL);
- s();
- return(1);
- } /* end speichern() */
-
-
- neu() /* delete all records */
- {
-
- if(zaehler==0) goto aff;
-
- movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text4,&postext1,&negtext1,NULL,NULL,200,50);
- if(ergebnis==FALSE) goto aff;
-
- for(i=0;i<zaehler;i++)
- { if(person[i]) FreeMem(person[i],sizeof(struct Daten));
- person[i] = 0;
- }
- for(i=0;i<MAXI;i++) person[i] = 0;
- zaehler = 0;
- print_anzahl();
- strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
- SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
- anderung = TRUE;
-
- aff: movemouse(w->LeftEdge+150,w->TopEdge+130);
- } /* end neu() */
-
-
- del() /* delete actual record */
- {
- char john[30];
- short a;
-
- if(zaehler==0) {movemouse(150,33);
- ergebnis = AutoRequest(NULL,&text,&postext1,&postext1,NULL,NULL,200,50);
- goto close_neu;}
-
- for(i=0;i<zaehler;i++)
- { if( my_strcmp(DefString,person[i]->such_begriff)==NULL)
- {
- strcpy(john," Delete <");
- strcat(john,person[i]->such_begriff);
- strcat(john,"> ? ");
- (UBYTE *) text2.IText = (UBYTE *)john;
-
- movemouse((strlen(john)*10)-50,38);
- ergebnis = AutoRequest(NULL,&text2,&postext1,&negtext1,NULL,NULL,strlen(john)*10+5,50);
- movemouse(w->LeftEdge+150,w->TopEdge+130);
- if(ergebnis == FALSE) goto close_neu;
-
-
- if(person[i]) FreeMem(person[i],sizeof(struct Daten));
- for(a=i;a<zaehler;a++) person[a] = person[a+1];
- zaehler -=1; person[zaehler] = 0; /* last record = 0 */
-
- print_anzahl();
- strcpy(DefString,"\0"); RefreshGadgets(&tex_gad,w,NULL);
- SetAPen(rp,2); RectFill(rp,77,78,285,120); SetAPen(rp,1);
-
- status("Record deleted. "); de();
- anderung = TRUE; return(1);
- }
- }
-
- movemouse(130,33);
- ergebnis = AutoRequest(NULL,&text3,&postext1,&postext1,NULL,NULL,200,50);
-
- close_neu:
- movemouse(w->LeftEdge+150,w->TopEdge+130);
- return(0);
- } /* end del() */
-
- movemouse (ziel_x, ziel_y) /* moves mouse-cursor to a given position; */
- int ziel_x; /* needs preferences (look at main() */
- int ziel_y;
- {
- struct InputEvent mouse;
- struct IOStdReq *ioreq;
- struct MsgPort *ioport;
-
- int pos_x = IntuitionBase->ActiveScreen->MouseX;
- int pos_y = IntuitionBase->ActiveScreen->MouseY;
- int dx = ziel_x - pos_x;
- int dy = ziel_y - pos_y;
-
- if (!(ioport = CreatePort (NULL, NULL))) goto weg;
- if(!(ioreq = CreateStdIO(ioport))) goto weg;
- if (OpenDevice ("input.device", 0L, ioreq, 0L)) {
- ioreq -> io_Device = 0; goto weg;}
-
- ioreq -> io_Command = IND_WRITEEVENT;
- ioreq -> io_Flags = 0;
- ioreq -> io_Length = sizeof (struct InputEvent);
- ioreq -> io_Data = (APTR) &mouse;
-
- mouse.ie_NextEvent = 0;
- mouse.ie_Class = IECLASS_RAWMOUSE;
- mouse.ie_TimeStamp.tv_secs = mouse.ie_TimeStamp.tv_micro = 0;
- mouse.ie_Code = IECODE_NOBUTTON;
- mouse.ie_Qualifier = IEQUALIFIER_RELATIVEMOUSE;
- mouse.ie_X = prefs.PointerTicks * dx;
- mouse.ie_Y = prefs.PointerTicks * (dy+dy); /* because HiRes ! */
- if(DoIO (ioreq)) goto weg;
-
- weg:
- if (ioreq) {
- if(ioreq->io_Device) CloseDevice(ioreq);
- DeleteStdIO (ioreq);
- }
- if (ioport) DeletePort (ioport);
- } /* end movemouse() */
-
-
- print_anzahl() /* shows number of records */
- {
- SetAPen(rp,2); RectFill(rp,192,60,285,72); SetAPen(rp,1);
- sprintf(Date_Buffer,"%d",zaehler); Move(rp,193,68); Text(rp,Date_Buffer,strlen(Date_Buffer));
- }
-
- decodiere(reihe,number)
- UBYTE reihe[];
- LONG number;
- {
- ;
- } /* end decodiere() */
-
-
- codiere(reihe,number)
- UBYTE reihe[];
- LONG number;
- {
- ;
- } /* end codiere() */
-
- compute(sesam)
- UBYTE sesam[];
- {
- ;
- } /* end compute() */
-
-
- get_sesam() /* enter the password */
- {
- struct RastPort *rp_sesam;
- struct IntuiMessage *message2;
- ULONG class2; USHORT code2;
- struct Gadget *igad2;
- int gadgid2;
-
- if(!(sesam_win = (struct Window *)OpenWindow(&nw6))) { sys_info(3,"No Sesam-WINDOW !",0); return(0);}
- rp_sesam = sesam_win->RPort;
-
- SetRast(rp_sesam,2);
- SetAPen(rp_sesam,0);
- RectFill(rp_sesam,66,25,185,36);
-
- DrawBorder(rp_sesam,&StrBorder5,0,0);
- RefreshGadgets(&sesam_gad,sesam_win,NULL);
- ActivateGadget(&sesam_gad,sesam_win,NULL);
-
- movemouse(a_w->LeftEdge+170,a_w->TopEdge+38);
-
- for(;;)
- {
- Wait((1<<sesam_win->UserPort->mp_SigBit));
- while(message2 = (struct IntuiMessage *)GetMsg(sesam_win->UserPort))
- {
- class2 = message2->Class;
- code2 = message2->Code;
- ReplyMsg(message2);
- igad2 = (struct Gadget *) message2->IAddress;
- gadgid2 = igad2->GadgetID;
- switch (class2)
- {
- case GADGETDOWN:
- switch(gadgid2)
- {
- case 2: goto jesus; break;
- };
- case GADGETUP: goto jesus; break;
- };
- } /* end while */
- } /* end for */
-
- jesus:
- if(sesam_win) {CloseWindow(sesam_win); sesam_win=NULL;}
- return(1);
- }
-
- sys_info(a_pen,text,dauer) /* a_pen: Color of Text; */
- int dauer; /* if dauer==0 : then depending on the length of text */
- short a_pen;
- char *text;
- {
- struct Window *inf_win;
- struct RastPort *inf_rp;
-
- if((new_inf_win.Width = (strlen(text)*8)+10)<190) new_inf_win.Width=190;
- new_inf_win.LeftEdge = (640-new_inf_win.Width)/2;
- new_inf_win.Title = (UBYTE *)"(Wo) User-Information: ";
- if((inf_win =(struct Window *)OpenWindow(&new_inf_win)) == NULL) return(0);
- inf_rp = inf_win->RPort;
-
- SetAPen(inf_rp,1);
- RectFill(inf_rp,2,10,new_inf_win.Width-3,26);
- SetAPen(inf_rp,a_pen); SetBPen(inf_rp,1); SetDrMd(inf_rp,JAM2);
- Move(inf_rp,5,21);
- Text(inf_rp,text,strlen(text));
-
- switch(dauer)
- { case 0: Delay(strlen(text)*7); break; /*von Anzahl der Buchstaben abhängig */
- default: Delay(dauer); break; /* so lang wie dauer */
- };
-
- if(inf_win) CloseWindow(inf_win);
- }
-
- ende(error_nr) /* it's never to late ... */
- short error_nr;
- {
- if((anderung==TRUE)&&(zaehler>0))
- {
- movemouse(190,38);
- ergebnis = AutoRequest(NULL,&text5,&postext1,&negtext1,NULL,NULL,260,50);
- if(ergebnis==TRUE) offne_file(1);
- /* if file has been changed: save it ? */
- }
-
- AbortIO((char *) &timereq.tr_node);
- if(openerror==0) CloseDevice(&timereq);
- if(timerport) DeletePort(timerport);
-
-
- if(zaehler>0)
- {for(i=0;i<zaehler;i++)
- { if(person[i]) FreeMem(person[i],sizeof(struct Daten));}
- }
-
- if(w) CloseWindow(w);
-
- switch(error_nr)
- {case 0: sys_info(2," User Abort. ",0); break;
- case 1: sys_info(3,"No DOS.library !",0); break;
- case 2: sys_info(3,"No GFX.library !",0); break;
- case 3: sys_info(3,"No INTUITION.library !",0); break;
- case 4: sys_info(3,"No TIMER-Port/Devive !",0); break;
- case 5: sys_info(3,"No Main-WINDOW !",0); break;
- case 6: sys_info(3,"MEMORY-Allocation problem !",0); break;
- case 7: sys_info(3,"No HiRes-Screen-Resolution !",0); break;
- };
-
- if(DosBase) CloseLibrary(DosBase);
- if(GfxBase) CloseLibrary(GfxBase);
- if(IntuitionBase) CloseLibrary(IntuitionBase);
-
- exit(1);
- } /* end ende() */
-