home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format 56 / af056sub.adf / parnfs.lha / support.c < prev   
C/C++ Source or Header  |  1993-12-02  |  5KB  |  251 lines

  1. /*-
  2.  * $Id: support.c,v 1.1 1993/12/02 20:45:46 Rhialto Exp $
  3.  * $Log: support.c,v $
  4.  * Revision 1.1  1993/12/02  20:45:46  Rhialto
  5.  * Initial revision
  6.  *
  7. -*/
  8.  
  9. #include "netfs.h"
  10.  
  11. /*
  12.  * PACKET ROUTINES.    Dos Packets are in a rather strange format as you
  13.  * can see by this and how the PACKET structure is extracted in the
  14.  * GetMsg() of the main routine.
  15.  */
  16.  
  17. Prototype void returnpacket(struct DosPacket *packet);
  18.  
  19. void
  20. returnpacket(struct DosPacket *packet)
  21. {
  22.     register struct Message *mess;
  23.     register struct MsgPort *replyport;
  24.  
  25.     replyport = packet->dp_Port;
  26.     mess = packet->dp_Link;
  27.     packet->dp_Port = DosPort;
  28.     mess->mn_Node.ln_Name = (char *) packet;
  29.     mess->mn_Node.ln_Succ = NULL;
  30.     mess->mn_Node.ln_Pred = NULL;
  31.     PutMsg(replyport, mess);
  32. }
  33.  
  34. /*
  35.  * Are there any packets queued to our device?
  36.  */
  37.  
  38. Prototype int packetsqueued(void);
  39.  
  40. int
  41. packetsqueued(void)
  42. {
  43.     return ((void *) DosPort->mp_MsgList.lh_Head !=
  44.         (void *) &DosPort->mp_MsgList.lh_Tail);     /* & inserted by OIS */
  45. }
  46.  
  47. /*
  48.  * DOS MEMORY ROUTINES
  49.  */
  50.  
  51. Prototype void *dosalloc(ULONG bytes);
  52.  
  53. void           *
  54. dosalloc(ULONG bytes)
  55. {
  56.     register ULONG *ptr;
  57.  
  58.     bytes += sizeof (*ptr);
  59.     if (ptr = AllocMem(bytes, MEMF_PUBLIC | MEMF_CLEAR)) {
  60.     *ptr = bytes;
  61.     return (ptr + 1);
  62.     }
  63.  
  64.     return NULL;
  65. }
  66.  
  67. Prototype void dosfree(ULONG *ptr);
  68.  
  69. void
  70. dosfree(ULONG *ptr)
  71. {
  72.     --ptr;
  73.     FreeMem(ptr, *ptr);
  74. }
  75.  
  76. /*
  77.  * Convert a BSTR into a normal string.. copying the string into buf. I
  78.  * use normal strings for internal storage, and convert back and forth
  79.  * when required.
  80.  */
  81.  
  82. Prototype void btos(UBYTE *bstr, UBYTE *buf);
  83.  
  84. void
  85. btos(UBYTE *bstr, UBYTE *buf)
  86. {
  87.     bstr = BTOC(bstr);
  88.     if (*bstr)
  89.     CopyMem(bstr + 1, buf, (long)*bstr);
  90.     buf[*bstr] = 0;
  91. }
  92.  
  93. /*
  94.  * Some EXEC list handling routines not found in the EXEC library.
  95.  */
  96.  
  97. Prototype void *NextNode(struct MinNode *node);
  98.  
  99. void           *
  100. NextNode(struct MinNode *node)
  101. {
  102.     node = node->mln_Succ;
  103.     if (node->mln_Succ == NULL)
  104.     return (NULL);
  105.     return (node);
  106. }
  107.  
  108. #ifdef notdef
  109.  
  110. Prototype void *GetHead(struct MinList *list);
  111.  
  112. void           *
  113. GetHead(struct MinList *list)
  114. {
  115.     if ((void *) list->mlh_Head != (void *) &list->mlh_Tail)
  116.     return (list->mlh_Head);
  117.     return (NULL);
  118. }
  119.  
  120. Prototype void * GetTail(struct MinList *list);
  121.  
  122. void           *
  123. GetTail(struct MinList *list)
  124. {
  125.     if ((void *) list->mlh_Head != (void *) &list->mlh_Tail)
  126.     return (list->mlh_TailPred);
  127.     return (NULL);
  128. }
  129. #endif
  130.  
  131. #ifdef DEBUG
  132. Prototype char *typetostr(long ty);
  133.  
  134. char           *
  135. typetostr(long ty)
  136. {
  137.     switch (ty) {
  138.     case ACTION_DIE:
  139.     return ("DIE");
  140.     case ACTION_CURRENT_VOLUME:
  141.     return ("CURRENT VOLUME");
  142.     case ACTION_OPENRW:
  143.     return ("OPEN-RW");
  144.     case ACTION_OPENOLD:
  145.     return ("OPEN-OLD");
  146.     case ACTION_OPENNEW:
  147.     return ("OPEN-NEW");
  148.     case ACTION_READ:
  149.     return ("READ");
  150.     case ACTION_WRITE:
  151.     return ("WRITE");
  152.     case ACTION_CLOSE:
  153.     return ("CLOSE");
  154.     case ACTION_SEEK:
  155.     return ("SEEK");
  156.     case ACTION_EXAMINE_NEXT:
  157.     return ("EXAMINE NEXT");
  158.     case ACTION_EXAMINE_OBJECT:
  159.     return ("EXAMINE OBJ");
  160.     case ACTION_INFO:
  161.     return ("INFO");
  162.     case ACTION_DISK_INFO:
  163.     return ("DISK INFO");
  164.     case ACTION_PARENT:
  165.     return ("PARENTDIR");
  166.     case ACTION_DELETE_OBJECT:
  167.     return ("DELETE");
  168.     case ACTION_CREATE_DIR:
  169.     return ("CREATEDIR");
  170.     case ACTION_LOCATE_OBJECT:
  171.     return ("LOCK");
  172.     case ACTION_COPY_DIR:
  173.     return ("DUPLOCK");
  174.     case ACTION_FREE_LOCK:
  175.     return ("FREELOCK");
  176.     case ACTION_SET_PROTECT:
  177.     return ("SETPROTECT");
  178.     case ACTION_SET_COMMENT:
  179.     return ("SETCOMMENT");
  180.     case ACTION_RENAME_OBJECT:
  181.     return ("RENAME");
  182.     case ACTION_INHIBIT:
  183.     return ("INHIBIT");
  184.     case ACTION_RENAME_DISK:
  185.     return ("RENAME DISK");
  186.     case ACTION_MORECACHE:
  187.     return ("MORE CACHE");
  188.     case ACTION_WAIT_CHAR:
  189.     return ("WAIT FOR CHAR");
  190.     case ACTION_FLUSH:
  191.     return ("FLUSH");
  192.     case ACTION_RAWMODE:
  193.     return ("RAWMODE");
  194.     case ACTION_SET_DATE:
  195.     return ("SET_DATE");
  196.  
  197.     /* 2.0 stuff: */
  198.  
  199.     case ACTION_SET_FILE_SIZE:
  200.     return "ACTION_SET_FILE_SIZE";
  201.     case ACTION_SAME_LOCK:
  202.     return "ACTION_SAME_LOCK";
  203.     case ACTION_CHANGE_SIGNAL:
  204.     return "ACTION_CHANGE_SIGNAL ???";
  205.     case ACTION_WRITE_PROTECT:
  206.     return "ACTION_WRITE_PROTECT";
  207.     case ACTION_FH_FROM_LOCK:
  208.     return "ACTION_FH_FROM_LOCK";
  209.     case ACTION_IS_FILESYSTEM:
  210.     return "ACTION_IS_FILESYSTEM";
  211.     case ACTION_CHANGE_MODE:
  212.     return "ACTION_CHANGE_MODE";
  213.     case ACTION_COPY_DIR_FH:
  214.     return "ACTION_COPY_DIR_FH";
  215.     case ACTION_EXAMINE_FH:
  216.     return "ACTION_EXAMINE_FH";
  217.     case ACTION_PARENT_FH:
  218.     return "ACTION_PARENT_FH";
  219.     case ACTION_FORMAT:
  220.     return "ACTION_FORMAT";
  221.     case ACTION_MAKE_LINK:
  222.     return "ACTION_MAKE_LINK";
  223.     case ACTION_READ_LINK:
  224.     return "ACTION_READ_LINK";
  225.     case ACTION_LOCK_RECORD:
  226.     return "ACTION_LOCK_RECORD";
  227.     case ACTION_FREE_RECORD:
  228.     return "ACTION_FREE_RECORD";
  229.     case ACTION_EXAMINE_ALL:
  230.     return "ACTION_EXAMINE_ALL";
  231.     case ACTION_ADD_NOTIFY:
  232.     return "ACTION_ADD_NOTIFY";
  233.     case ACTION_REMOVE_NOTIFY:
  234.     return "ACTION_REMOVE_NOTIFY";
  235.  
  236.     /* 3.0 stuff: */
  237.  
  238.     case ACTION_EXAMINE_ALL_END:
  239.     return "ACTION_EXAMINE_ALL_END";
  240.     case ACTION_SET_OWNER:
  241.     return "ACTION_SET_OWNER";
  242.     case ACTION_SERIALIZE_DISK:
  243.     return "ACTION_SERIALIZE_DISK";
  244.  
  245.     default:
  246.     return ("---------UNKNOWN-------");
  247.     }
  248. }
  249.  
  250. #endif                /* HDEBUG */
  251.