home *** CD-ROM | disk | FTP | other *** search
/ MACD 4 / MACD4.iso / cdity / MCPBlankerOff.lha / Source / MCPBlankerOff.c next >
Encoding:
C/C++ Source or Header  |  1996-08-24  |  2.7 KB  |  118 lines

  1. /*
  2.     MCPBlankerOff by Leo Davidson
  3.     A simple program written in ANSI C (but uses ReadArgs()) to control the
  4.     state of MCP's screen blanker and dimmer (i.e. turn them on and off).
  5.  
  6.     $VER: MCPBlankerOff.c 1.1 (24.8.96)
  7.  
  8.     Public Domain.
  9. */
  10.  
  11. #include <string.h>
  12. #include <stdio.h>
  13. #include <dos/dos.h>
  14. #include <proto/dos.h>
  15.  
  16.  
  17. // Version strings must be double null-terminated.
  18. static char Version[] = "$VER: MCPBlankerOff 1.1 (25.8.96)\0";
  19.  
  20.  
  21.  
  22. // ReadArgs() commandline stuff
  23. char CommandTemplate[] = "ON/S,OFF/S,DIMMER/S";
  24. enum CmdTmpArgs {ARG_ON,ARG_OFF,ARG_DIMMER,ARG_TOTAL};
  25. LONG args[ARG_TOTAL];
  26. #define args_on  (BOOL)args[ARG_ON]
  27. #define args_off (BOOL)args[ARG_OFF]
  28. #define args_dim (BOOL)args[ARG_DIMMER]
  29.  
  30. #define CONFNAME "Env:MCP/MCP.Config"
  31. #define TEMPNAME "Env:MCP/MCP.Config.mcpblankeroff"
  32.  
  33. extern struct Library    *SysBase;
  34.  
  35. #define BUFFERSIZE 1024
  36. char buffer[BUFFERSIZE];
  37.  
  38. char blankerstr[] = "BLANKER=";
  39. char dimmerstr[] = "DIMMER=";
  40. #define blankerstr_len sizeof(blankerstr)/sizeof(char)
  41. #define dimmerstr_len sizeof(dimmerstr)/sizeof(char)
  42. #define NEWSTRING_ON  "BLANKER=ON\n"
  43. #define NEWSTRING_OFF "BLANKER=OFF\n"
  44. #define NEWSTRINGD_ON  "DIMMER=ON\n"
  45. #define NEWSTRINGD_OFF "DIMMER=OFF\n"
  46.  
  47.  
  48. ULONG main(void)
  49. {
  50.     struct RDArgs *rda;
  51.     FILE *infile;
  52.     FILE *outfile;
  53.  
  54.     ULONG main_rc = RETURN_FAIL;
  55.  
  56.     if (!(rda = ReadArgs(CommandTemplate,args,NULL)))
  57.         PrintFault(IoErr(),"MCPBlankerOff");
  58.     else
  59.     {
  60.         if ( (args_on && args_off) || !(args_on || args_off) )
  61.             printf("MCPBlankerOff: You must specify either \"on\" or \"off\".\n");
  62.  
  63.         else if ( rename(CONFNAME,TEMPNAME) )
  64.             printf("MCPBlankerOff: Couldn't find MCP config file.\n");
  65.  
  66.         else if (! (infile = fopen(TEMPNAME,"r")) )
  67.             printf("MCPBlankerOff: Couldn't find MCP config file.\n");
  68.         else
  69.         {
  70.             if (! (outfile = fopen(CONFNAME,"w")) )
  71.             {
  72.                 printf("MCPBlankerOff: Couldn't write new config file.\n");
  73.                 rename(TEMPNAME,CONFNAME);
  74.             }
  75.             else
  76.             {
  77.                 while ( fgets(buffer,BUFFERSIZE,infile) )
  78.                 {
  79.                     if ( strncmp(buffer,blankerstr,blankerstr_len - 1) )
  80.                     {
  81.                         if ( (!args_dim) || \
  82.                              (strncmp(buffer,dimmerstr,dimmerstr_len - 1)) )
  83.                             fputs(buffer,outfile);
  84.                         else if (args_on)
  85.                             fputs(NEWSTRINGD_ON,outfile);
  86.                         else
  87.                             fputs(NEWSTRINGD_OFF,outfile);
  88.                     }
  89.                     else if (args_on)
  90.                         fputs(NEWSTRING_ON,outfile);
  91.                     else
  92.                         fputs(NEWSTRING_OFF,outfile);
  93.                 }
  94.                 fclose(outfile);
  95.  
  96.                 if (! (feof(infile)) )
  97.                 {
  98.                     fclose(infile);
  99.                     printf("MCPBlankerOff: Error creating new config file.\n");
  100.                     remove(CONFNAME);
  101.                     rename(TEMPNAME,CONFNAME);
  102.                 }
  103.                 else
  104.                 {
  105.                     fclose(infile);
  106.                     remove(TEMPNAME);
  107.                     main_rc = RETURN_OK;
  108.                 }
  109.             }
  110.             if (infile)
  111.                 fclose(infile);
  112.         }
  113.     }
  114.  
  115.     return main_rc;
  116.  
  117. }
  118.