home *** CD-ROM | disk | FTP | other *** search
/ Info-Mac 3 / Info_Mac_1994-01.iso / Development / Source / Mailcheck Source / test src / mmc_test_drvr.c next >
Encoding:
C/C++ Source or Header  |  1990-08-01  |  2.7 KB  |  137 lines  |  [TEXT/KAHL]

  1. /*
  2.  * main program to test gms server
  3.  * by Aaron Wohl (aw0g+@andrew.cmu.edu) jul 1990
  4.  * Carnegie-Mellon University
  5.  * Special Projects
  6.  * Pittsburgh, PA 15213-3890
  7.  * (412)-268-5032
  8.  */
  9.  
  10. #include <stdio.h>
  11. #include <string.h>
  12.  
  13. #define NIL 0L
  14.  
  15. #include "mmc_core.h"
  16. #include "mmc_drvr_find.h"
  17. #include "mmc_drvr_install.h"
  18. #include "mmc_print_state.h"
  19. #include "mmc_prep.h"
  20. #include "mmc_macmail.h"
  21.  
  22. #define fatal_error(xx_arg) {printf xx_arg;fflush(stdout);exit(0);}
  23. extern void exit(int);
  24.  
  25. struct {
  26.     int drvr_refnum;
  27.     int drvr_res_file;
  28. }gl;
  29.  
  30. char get_cmd(void);
  31. char get_cmd()
  32. {
  33.     char buf[100];
  34.     printf("mmc> ");
  35.     if(gets(buf)==NIL)
  36.         return 0;
  37.     return buf[0];
  38. }
  39.  
  40. void get_state(void);
  41. void get_state()
  42. {
  43.   mmc_state s;
  44.   int err=mmc_get_drvr_state(gl.drvr_refnum,&s);
  45.   printf("getstate error code = %d\n",err);
  46.   if(err!=0)
  47.       return;
  48.   mmc_print_state(&s);
  49. }
  50.  
  51. void mmc_start(void);
  52. void mmc_start()
  53. {
  54.   int err;
  55.   mmc_state s;
  56.   mmc_invent_state(&s);
  57. #ifdef RUBBISH
  58.   TURN_ON_FLAGS(s,MCS_debug);
  59. #endif
  60.   err=mmc_set_drvr_state(gl.drvr_refnum,&s,MMC_set_state);
  61.   mmc_print_state(&s);
  62.   printf("init error code = %d\n",err);
  63. }
  64.  
  65. void mmc_close(void);
  66. void mmc_close()
  67. {
  68.   int err;
  69.   err=CloseDriver(gl.drvr_refnum);
  70.   printf("close error code = %d\n",err);
  71. }
  72.  
  73. void poke_in_drvr(void);
  74. void poke_in_drvr()
  75. {
  76.   int old_res_file;
  77.   int err;
  78.   old_res_file=CurResFile();    /*remember so we can put current resource file back*/
  79.   gl.drvr_res_file=OpenResFile("\pmmc_init.prj.rsrc"); /*open the device driver resource file*/
  80.   if(gl.drvr_res_file== -1)        /*find the resource file?*/
  81.     fatal_error(("can't open resource file mmc_init.prj.rsrc file %d",ResError()));
  82.   UseResFile(gl.drvr_res_file);    /*may already be open, search it*/
  83.   err=mmc_drvr_find_or_install(&gl.drvr_refnum);
  84.   if(err==0)
  85.     err=OpenDriver(MMC_name,&gl.drvr_refnum);
  86.   UseResFile(old_res_file);    /*go back to the normal resource file*/
  87.   printf("driver refnum is %d err=%d\n",gl.drvr_refnum,err);
  88. }
  89.  
  90. void cmd_loop(void);
  91. void cmd_loop()
  92. {
  93.     while(TRUE) {
  94.         char ch=get_cmd();
  95.         switch(ch) {
  96.         case 'q':
  97.             return;
  98.             break;
  99.         case 'i':
  100.             poke_in_drvr();
  101.             break;
  102.         case 's':        /*start driver*/
  103.             mmc_start();
  104.             break;
  105.         case 'm':
  106.             mmc_macmail(MMC_inhibit,"\pjs5l");
  107.             break;
  108.         case 'o':
  109.             mmc_macmail(MMC_normal,"\pjs5l");
  110.             break;
  111.         case 'g':
  112.             get_state();
  113.             break;
  114.         case 'c':
  115.             mmc_close();
  116.             break;
  117.         default:
  118.             printf("unrecignized command '%c'\n",ch);
  119.         }
  120.     }
  121. }
  122.  
  123. void print_status(void);
  124. void print_status()
  125. {
  126.     int new_ref_num;
  127.     gl.drvr_refnum=mmc_drvr_find(MMC_name,&new_ref_num);
  128.     printf("found ref=%d new ref=%d\n",gl.drvr_refnum,new_ref_num);
  129. }
  130.  
  131. int main()
  132. {
  133.     printf("mmc test client test jig built on %s %s\n",__DATE__,__TIME__);
  134.     print_status();
  135.     cmd_loop();
  136. }
  137.