home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / reference / amiga_mail_vol2 / ii-37 / setstar.c < prev   
C/C++ Source or Header  |  1996-01-30  |  3KB  |  115 lines

  1. ;/* SetStar.c.   AmigaMail '*' wildcard example. Pure code if pragmas are used.
  2. ;* Compiled with SAS/C 6.56
  3. sc NMINC STRMERGE NOSTKCHK NODEBUG DATA=FAR IGNORE=73 SetStar.c
  4. slink from SetStar.o to SetStar lib lib:amiga.lib; if you don't have pragmas
  5. quit
  6.  *
  7.  */
  8. /*
  9. Copyright (c) 1991 Commodore-Amiga, Inc.
  10.  
  11. This example is provided in electronic form by Commodore-Amiga,
  12. Inc. for use with the Amiga Mail Volume II technical publication.
  13. Amiga Mail Volume II contains additional information on the correct
  14. usage of the techniques and operating system functions presented in
  15. these examples.  The source and executable code of these examples may
  16. only be distributed in free electronic form, via bulletin board or
  17. as part of a fully non-commercial and freely redistributable
  18. diskette.  Both the source and executable code (including comments)
  19. must be included, without modification, in any copy.  This example
  20. may not be published in printed form or distributed with any
  21. commercial product. However, the programming techniques and support
  22. routines set forth in these examples may be used in the development
  23. of original executable software products for Commodore Amiga
  24. computers.
  25.  
  26. All other rights reserved.
  27.  
  28. This example is provided "as-is" and is subject to change; no
  29. warranties are made.  All use is at your own risk. No liability or
  30. responsibility is assumed.
  31. */
  32.  
  33. #include <exec/types.h>
  34. #include <dos/dosextens.h>
  35. #include <dos/rdargs.h>
  36.  
  37. #include <clib/exec_protos.h>
  38. #include <clib/dos_protos.h>
  39.  
  40. /*
  41.  * undef PRAGMAS if you don't have them #define PRAGMAS
  42.  */
  43. #ifdef PRAGMAS
  44. #include <pragmas/exec_pragmas.h>
  45. #include <pragmas/dos_pragmas.h>
  46. #else
  47. struct ExecBase *SysBase;
  48. struct DosLibrary *DOSBase;
  49.  
  50. #endif
  51.  
  52. static UBYTE   *VersTag = "\0$VER: SetStar 37.1 (12.07.91)";
  53.  
  54.  
  55. VOID            main(VOID);
  56. UWORD           StrLen(UBYTE *);
  57.  
  58. VOID
  59. main(VOID)
  60. {
  61. #ifdef PRAGMAS
  62.     struct DosLibrary *DOSBase;
  63.  
  64. #endif
  65.  
  66.     struct RDArgs  *readargs;
  67.     LONG            rargs[2];
  68.     UWORD           on, off;
  69.  
  70. #ifndef PRAGMAS
  71.     /* set up SysBase */
  72.     SysBase = (*((struct Library **) 4));
  73. #endif
  74.  
  75.     /* Fail silently if < 37 */
  76.     if (DOSBase = (struct DosLibrary *) OpenLibrary("dos.library", 37))
  77.     {
  78.         rargs[0] = 0;
  79.         rargs[1] = 0;
  80.  
  81.         /* See the DOS Autodocs for more information about ReadArgs() */
  82.         if (readargs = ReadArgs("ON/S,OFF/S", rargs, NULL))
  83.         {
  84.             on = (UWORD) (rargs[0]);
  85.             off = (UWORD) (rargs[1]);
  86.  
  87.             /*
  88.              * The RNF_WILDSTAR bit in the rn_Flags field indicates whether the
  89.              * '*' should be treated as wildcard or not.
  90.              *
  91.              * Show current setting if both ON & OFF or specified or neither.
  92.              */
  93.             if (on == off)
  94.             {
  95.                 if (DOSBase->dl_Root->rn_Flags & RNF_WILDSTAR)
  96.                     rargs[0] = (LONG) "ON";
  97.                 else
  98.                     rargs[0] = (LONG) "OFF";
  99.                 VFPrintf(Output(), "Wildstar is %s\n", rargs);
  100.             }
  101.             else
  102.             {
  103.                 if (on)
  104.                     DOSBase->dl_Root->rn_Flags |= RNF_WILDSTAR;
  105.                 else
  106.                     DOSBase->dl_Root->rn_Flags &= ~RNF_WILDSTAR;
  107.             }
  108.             FreeArgs(readargs);
  109.         }
  110.         else
  111.             PrintFault(IoErr(), NULL);
  112.         CloseLibrary((struct Library *) DOSBase);
  113.     }
  114. }
  115.