home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / sys / amiga / programm / 17564 < prev    next >
Encoding:
Text File  |  1992-12-21  |  5.3 KB  |  152 lines

  1. Path: sparky!uunet!mcsun!news.funet.fi!ajk.tele.fi!funic!sauna.cs.hut.fi!news.cs.hut.fi!s37732v
  2. From: s37732v@snakemail.hut.fi (Markus Juhani Aalto)
  3. Newsgroups: comp.sys.amiga.programmer
  4. Subject: Re: Sigh.. OKAY.  ReadArgs() is buggy?
  5. Date: 19 Dec 92 09:06:43 GMT
  6. Organization: Helsinki University of Technology, Finland
  7. Lines: 138
  8. Distribution: inet
  9. Message-ID: <S37732V.92Dec19110643@lk-hp-16.hut.fi>
  10. References: <BzHto9.9pG@usenet.ucs.indiana.edu>
  11. NNTP-Posting-Host: lk-hp-16.hut.fi
  12. In-reply-to: shulick@navajo.ucs.indiana.edu's message of Sat, 19 Dec 1992 06:21:45 GMT
  13.  
  14. In article <BzHto9.9pG@usenet.ucs.indiana.edu> shulick@navajo.ucs.indiana.edu (Sam Hulick) writes:
  15.  
  16.    (*&%(*@&(*&%!!  I've about had it with this fucking routine!  (If only I
  17.    had the money to buy a book...)
  18.  
  19.    #define TEMPLATE "Files/M/A,I=Ignore/S,L=Learn/S,V=Verbose/S,Action=ToDo/K"
  20.  
  21.    ...
  22.    ...
  23.  
  24.    LONG arr[5];
  25.    struct RDArgs *rd;
  26.  
  27. Did you initialize arr array to zeros. Like this arr[0]=0; arr[1]=0; etc..
  28.  
  29.        rd = ReadArgs(TEMPLATE, arr, NULL);  /* Let's assume success */
  30.  
  31.    Ok, let's say the command line was:  "program blech.pic"
  32.    For some WEIRD reason, arr[1] == -1, arr[2] == 0 (this is ok), and
  33.    arr[3] == 32791839!!  What the HELL?  I checked someone else's source
  34.    code, and indeed, if it's -1, the switch (/S) was picked, and if not, 0.
  35.    What the hell is a 32791839 doing in arr[3]?  Arr[3] corresponds to
  36.    "V=Verbose/S".  Well, there's not much I can say about this.  I have no
  37.    idea what would cause this.  Again, please follow-up here, do NOT e-mail
  38.    me.  Thanks.
  39.  
  40.        // Amiga 3000   ___ \ Sam Hulick: shulick@indiana.edu (NeXTmail OK!)
  41.  
  42. You've been torturing :^) yourself too long with this problem. Here is a
  43. working code from my ScreenSelect. Well, just a part anyway.
  44.  
  45. #define TEMPLATE        "CX_POPKEY/K,CX_PRIORITY/N/K,QUICKKEYS/K,\
  46. SCREENKEY/K,CX_POPUP/S,ALLSCREENS/S,SMARTPOINTER/S,AUTOACTIVATE/S"
  47.  
  48. #define CXPOPKEY            0
  49. #define CXPRI               1
  50. #define CXQUICKKEYS         2
  51. #define CXSCREENKEY         3
  52. #define CXPOPUP             4
  53. #define CXALLSCREENS        5
  54. #define CXSMARTPOINTER      6
  55. #define CXAUTOACTIVATION    7
  56. #define ARG_COUNT           8
  57.  
  58.  
  59. struct RDArgs *my_rda;
  60. LONG *Array;
  61.  
  62. Array = (LONG *)AllocMem(sizeof(LONG)*ARG_COUNT,MEMF_ANY|MEMF_CLEAR);
  63. if( Array ) {
  64.     my_rda = (struct RDArgs *)AllocDosObject(DOS_RDARGS,NULL);
  65.     if(my_rda) {
  66.         my_rda->RDA_Source.CS_Buffer = GetArgStr();
  67.         my_rda->RDA_Source.CS_Length = strlen( GetArgStr() );
  68.         my_rda->RDA_Source.CS_CurChr = 0;
  69.  
  70.         if( ReadArgs(TEMPLATE,Array,my_rda) ) {
  71.             if(Array[CXPOPUP] != 0) {
  72.                 dtb->cx_popup = TRUE;
  73.             }
  74.  
  75.             if(Array[CXPOPKEY] != 0) {
  76.                 dtb->cx_hotkey = (UBYTE *)AllocMem(1+
  77.                         strlen((UBYTE *)Array[CXPOPKEY]),MEMF_ANY);
  78.                 if(dtb->cx_hotkey == NULL) {
  79.                     FreeArgs(my_rda);
  80.                     FreeDosObject(DOS_RDARGS,(VOID *)my_rda);
  81.                     FreeMem((void *)Array,sizeof(LONG)*ARG_COUNT);
  82.                     return(FALSE);
  83.                 }
  84.  
  85.                 strcpy(dtb->cx_hotkey,(UBYTE *)Array[CXPOPKEY]);
  86.                 dtb->cx_hotkeyreserved = TRUE;
  87.             }
  88.  
  89.             if(Array[CXSCREENKEY] != 0) {
  90.                 dtb->pubscreen_hotkey = (UBYTE *)AllocMem(1+
  91.                         strlen((UBYTE *)Array[CXSCREENKEY]),MEMF_ANY);
  92.                 if(dtb->pubscreen_hotkey == NULL) {
  93.                     FreeArgs(my_rda);
  94.                     FreeDosObject(DOS_RDARGS,(VOID *)my_rda);
  95.                     FreeMem((void *)Array,sizeof(LONG)*ARG_COUNT);
  96.                     return(FALSE);
  97.                 }
  98.  
  99.                 strcpy(dtb->pubscreen_hotkey,(UBYTE *)Array[CXSCREENKEY]);
  100.                 dtb->pubscreenkey_reserved = TRUE;
  101.             }
  102.  
  103.  
  104.             if(Array[CXPRI] != 0) {
  105.                 dtb->cx_pri = (BYTE)(*(LONG *)Array[CXPRI]);
  106.             }
  107.  
  108.             if(Array[CXALLSCREENS] != 0 ) {
  109.                 dtb->cx_AllScreens = TRUE;
  110.             }
  111.  
  112.             if(Array[CXSMARTPOINTER] != 0) {
  113.                 dtb->cx_SmartPointer = TRUE;
  114.             }
  115.  
  116.             if(Array[CXAUTOACTIVATION] != 0) {
  117.                 dtb->cx_AutoActivation = TRUE;
  118.             }
  119.  
  120.             if(Array[CXQUICKKEYS] != 0 ) {
  121.                 if( !ParseQuickKeys(dtb,(UBYTE *)Array[CXQUICKKEYS]) ) {
  122.                     FreeArgs(my_rda);
  123.                     FreeDosObject(DOS_RDARGS,(VOID *)my_rda);
  124.                     FreeMem((void *)Array,sizeof(LONG)*ARG_COUNT);
  125.                     return(FALSE);
  126.                 }
  127.             }
  128.  
  129.             FreeArgs(my_rda);
  130.         }
  131.         else PrintFault( IoErr(), "Args");
  132.  
  133.         FreeDosObject(DOS_RDARGS,(VOID *)my_rda);
  134.     }
  135.     FreeMem((void *)Array,sizeof(LONG)*ARG_COUNT);
  136. }
  137.  
  138. ------------------------------------------------------
  139.  
  140. Hope this helps!
  141. --
  142.  
  143.  
  144. **************************************************************************
  145. *         Markus Aalto              | Helsinki University of Technology  *
  146. *                                   |                                    *
  147. *  EMail: s37732v@vipunen.hut.fi    | Faculty of Electric Engineering    *
  148. *  Fax:   358-0-8746991 (Sometimes) |                                    *
  149. *                                   | Undergraduate in Computer Science  *
  150. **************************************************************************
  151.         
  152.