home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / oslib / oslib_1 / OSLib / Computer / h / netfs < prev    next >
Encoding:
Text File  |  1995-06-29  |  48.5 KB  |  1,550 lines

  1. #ifndef netfs_H
  2. #define netfs_H
  3.  
  4. /* C header file for NetFS
  5.  * written by DefMod (Jun 20 1995) on Thu Jun 29 16:57:18 1995
  6.  * Jonathan Coxhead, Acorn Computers Ltd
  7.  */
  8.  
  9. #ifndef types_H
  10. #include "types.h"
  11. #endif
  12.  
  13. #ifndef os_H
  14. #include "os.h"
  15. #endif
  16.  
  17. #ifndef fileswitch_H
  18. #include "fileswitch.h"
  19. #endif
  20.  
  21. /**********************************
  22.  * SWI names and SWI reason codes *
  23.  **********************************/
  24. #undef  NetFS_ReadFSNumber
  25. #define NetFS_ReadFSNumber                      0x40040
  26. #undef  XNetFS_ReadFSNumber
  27. #define XNetFS_ReadFSNumber                     0x60040
  28. #undef  NetFS_SetFSNumber
  29. #define NetFS_SetFSNumber                       0x40041
  30. #undef  XNetFS_SetFSNumber
  31. #define XNetFS_SetFSNumber                      0x60041
  32. #undef  NetFS_ReadFSName
  33. #define NetFS_ReadFSName                        0x40042
  34. #undef  XNetFS_ReadFSName
  35. #define XNetFS_ReadFSName                       0x60042
  36. #undef  NetFS_SetFSName
  37. #define NetFS_SetFSName                         0x40043
  38. #undef  XNetFS_SetFSName
  39. #define XNetFS_SetFSName                        0x60043
  40. #undef  NetFS_ReadFSTimeouts
  41. #define NetFS_ReadFSTimeouts                    0x40046
  42. #undef  XNetFS_ReadFSTimeouts
  43. #define XNetFS_ReadFSTimeouts                   0x60046
  44. #undef  NetFS_SetFSTimeouts
  45. #define NetFS_SetFSTimeouts                     0x40047
  46. #undef  XNetFS_SetFSTimeouts
  47. #define XNetFS_SetFSTimeouts                    0x60047
  48. #undef  NetFS_DoFSOp
  49. #define NetFS_DoFSOp                            0x40048
  50. #undef  XNetFS_DoFSOp
  51. #define XNetFS_DoFSOp                           0x60048
  52. #undef  NetFS_EnumerateFSList
  53. #define NetFS_EnumerateFSList                   0x40049
  54. #undef  XNetFS_EnumerateFSList
  55. #define XNetFS_EnumerateFSList                  0x60049
  56. #undef  NetFS_EnumerateFS
  57. #define NetFS_EnumerateFS                       0x4004A
  58. #undef  XNetFS_EnumerateFS
  59. #define XNetFS_EnumerateFS                      0x6004A
  60. #undef  NetFS_ConvertDate
  61. #define NetFS_ConvertDate                       0x4004B
  62. #undef  XNetFS_ConvertDate
  63. #define XNetFS_ConvertDate                      0x6004B
  64. #undef  NetFS_DoFSOpToGivenFS
  65. #define NetFS_DoFSOpToGivenFS                   0x4004C
  66. #undef  XNetFS_DoFSOpToGivenFS
  67. #define XNetFS_DoFSOpToGivenFS                  0x6004C
  68. #undef  NetFS_UpdateFSList
  69. #define NetFS_UpdateFSList                      0x4004D
  70. #undef  XNetFS_UpdateFSList
  71. #define XNetFS_UpdateFSList                     0x6004D
  72. #undef  NetFS_EnumerateFSContexts
  73. #define NetFS_EnumerateFSContexts               0x4004E
  74. #undef  XNetFS_EnumerateFSContexts
  75. #define XNetFS_EnumerateFSContexts              0x6004E
  76. #undef  NetFS_ReadUserId
  77. #define NetFS_ReadUserId                        0x4004F
  78. #undef  XNetFS_ReadUserId
  79. #define XNetFS_ReadUserId                       0x6004F
  80. #undef  NetFS_GetObjectUID
  81. #define NetFS_GetObjectUID                      0x40050
  82. #undef  XNetFS_GetObjectUID
  83. #define XNetFS_GetObjectUID                     0x60050
  84. #undef  NetFS_EnableCache
  85. #define NetFS_EnableCache                       0x40051
  86. #undef  XNetFS_EnableCache
  87. #define XNetFS_EnableCache                      0x60051
  88. #undef  Service_NetFS
  89. #define Service_NetFS                           0x55
  90. #undef  Service_NetFSDying
  91. #define Service_NetFSDying                      0x5F
  92.  
  93. /************************************
  94.  * Structure and union declarations *
  95.  ************************************/
  96. typedef struct netfs_cli_request                netfs_cli_request;
  97. typedef struct netfs_save_request               netfs_save_request;
  98. typedef struct netfs_save_reply                 netfs_save_reply;
  99. typedef struct netfs_save_final_reply           netfs_save_final_reply;
  100. typedef struct netfs_load_request               netfs_load_request;
  101. typedef struct netfs_load_reply                 netfs_load_reply;
  102. typedef struct netfs_ex_request                 netfs_ex_request;
  103. typedef struct netfs_cat_request                netfs_cat_request;
  104. typedef struct netfs_cat_reply                  netfs_cat_reply;
  105. typedef struct netfs_open_request               netfs_open_request;
  106. typedef struct netfs_open_reply                 netfs_open_reply;
  107. typedef struct netfs_close_request              netfs_close_request;
  108. typedef struct netfs_bget_request               netfs_bget_request;
  109. typedef struct netfs_bget_reply                 netfs_bget_reply;
  110. typedef struct netfs_bput_request               netfs_bput_request;
  111. typedef struct netfs_gbpb_request               netfs_gbpb_request;
  112. typedef struct netfs_gbpb_reply                 netfs_gbpb_reply;
  113. typedef struct netfs_read_args_request          netfs_read_args_request;
  114. typedef struct netfs_read_args_reply            netfs_read_args_reply;
  115. typedef struct netfs_set_args_request           netfs_set_args_request;
  116. typedef struct netfs_read_disc_info_request     netfs_read_disc_info_request;
  117. typedef struct netfs_disc_info                  netfs_disc_info;
  118. typedef struct netfs_read_disc_info_reply       netfs_read_disc_info_reply;
  119. typedef struct netfs_read_logon_info_request    netfs_read_logon_info_request;
  120. typedef struct netfs_logon_info                 netfs_logon_info;
  121. typedef struct netfs_read_logon_info_reply      netfs_read_logon_info_reply;
  122. typedef struct netfs_read_date_and_time_reply   netfs_read_date_and_time_reply;
  123. typedef struct netfs_read_eof_status_request    netfs_read_eof_status_request;
  124. typedef struct netfs_read_eof_status_reply      netfs_read_eof_status_reply;
  125. typedef struct netfs_read_object_request        netfs_read_object_request;
  126. typedef struct netfs_delete_object_request      netfs_delete_object_request;
  127. typedef struct netfs_delete_object_reply        netfs_delete_object_reply;
  128. typedef struct netfs_read_env_reply             netfs_read_env_reply;
  129. typedef struct netfs_opt_request                netfs_opt_request;
  130. typedef struct netfs_read_user_info_request     netfs_read_user_info_request;
  131. typedef struct netfs_read_user_info_reply       netfs_read_user_info_reply;
  132. typedef struct netfs_read_version_reply         netfs_read_version_reply;
  133. typedef struct netfs_read_free_request          netfs_read_free_request;
  134. typedef struct netfs_read_free_reply            netfs_read_free_reply;
  135. typedef struct netfs_create_dir_request         netfs_create_dir_request;
  136. typedef struct netfs_set_date_and_time_request  netfs_set_date_and_time_request;
  137. typedef struct netfs_create_request             netfs_create_request;
  138. typedef struct netfs_create_reply               netfs_create_reply;
  139. typedef struct netfs_read_user_free_request     netfs_read_user_free_request;
  140. typedef struct netfs_read_user_free_reply       netfs_read_user_free_reply;
  141. typedef struct netfs_set_user_free_request      netfs_set_user_free_request;
  142. typedef struct netfs_read_user_name_reply       netfs_read_user_name_reply;
  143. typedef struct netfs_logon_info_extended        netfs_logon_info_extended;
  144. typedef struct netfs_read_logon_info_extended_request netfs_read_logon_info_extended_request;
  145. typedef struct netfs_read_logon_info_extended_reply netfs_read_logon_info_extended_reply;
  146. typedef struct netfs_read_user_info_extended_request netfs_read_user_info_extended_request;
  147. typedef struct netfs_read_user_info_extended_reply netfs_read_user_info_extended_reply;
  148. typedef struct netfs_cli_info_reply             netfs_cli_info_reply;
  149. typedef struct netfs_clii_am_reply              netfs_clii_am_reply;
  150. typedef struct netfs_clis_disc_reply            netfs_clis_disc_reply;
  151. typedef struct netfs_cli_dir_reply              netfs_cli_dir_reply;
  152. typedef struct netfs_cli_unknown_reply          netfs_cli_unknown_reply;
  153. typedef struct netfs_cli_lib_reply              netfs_cli_lib_reply;
  154. typedef struct netfs_ex_reply                   netfs_ex_reply;
  155. typedef struct netfs_ex_text_reply              netfs_ex_text_reply;
  156. typedef struct netfs_ex_title_reply             netfs_ex_title_reply;
  157. typedef struct netfs_ex_title_text_reply        netfs_ex_title_text_reply;
  158. typedef struct netfs_read_object_stamp_reply    netfs_read_object_stamp_reply;
  159. typedef struct netfs_read_object_load_and_exec_addr_reply netfs_read_object_load_and_exec_addr_reply;
  160. typedef struct netfs_read_object_size_reply     netfs_read_object_size_reply;
  161. typedef struct netfs_read_object_attr_reply     netfs_read_object_attr_reply;
  162. typedef struct netfs_read_object_all_info_reply netfs_read_object_all_info_reply;
  163. typedef struct netfs_read_object_attr_and_cycle_no_reply netfs_read_object_attr_and_cycle_no_reply;
  164. typedef struct netfs_read_object_sin_reply      netfs_read_object_sin_reply;
  165. typedef struct netfs_set_object_load_exec_and_attr_request netfs_set_object_load_exec_and_attr_request;
  166. typedef struct netfs_set_object_load_addr_request netfs_set_object_load_addr_request;
  167. typedef struct netfs_set_object_exec_addr_request netfs_set_object_exec_addr_request;
  168. typedef struct netfs_set_object_attr_request    netfs_set_object_attr_request;
  169. typedef struct netfs_set_object_stamp_request   netfs_set_object_stamp_request;
  170. typedef struct netfs_manager_op_read_password_count_request netfs_manager_op_read_password_count_request;
  171. typedef struct netfs_manager_op_read_password_count_reply netfs_manager_op_read_password_count_reply;
  172. typedef struct netfs_manager_op_read_password_request netfs_manager_op_read_password_request;
  173. typedef struct netfs_manager_op_read_password_reply netfs_manager_op_read_password_reply;
  174. typedef struct netfs_manager_op_write_password_request netfs_manager_op_write_password_request;
  175. typedef struct netfs_manager_op_add_user_request netfs_manager_op_add_user_request;
  176. typedef struct netfs_manager_op_remove_user_request netfs_manager_op_remove_user_request;
  177. typedef struct netfs_manager_op_set_privilege_request netfs_manager_op_set_privilege_request;
  178. typedef struct netfs_manager_op_logoff_user_request netfs_manager_op_logoff_user_request;
  179. typedef union  netfs_cli                        netfs_cli;
  180. typedef union  netfs_save                       netfs_save;
  181. typedef union  netfs_load                       netfs_load;
  182. typedef union  netfs_ex                         netfs_ex;
  183. typedef union  netfs_cat                        netfs_cat;
  184. typedef union  netfs_open                       netfs_open;
  185. typedef union  netfs_close                      netfs_close;
  186. typedef union  netfs_bget                       netfs_bget;
  187. typedef union  netfs_bput                       netfs_bput;
  188. typedef union  netfs_gbpb                       netfs_gbpb;
  189. typedef union  netfs_read_args                  netfs_read_args;
  190. typedef union  netfs_set_args                   netfs_set_args;
  191. typedef union  netfs_read_disc_info             netfs_read_disc_info;
  192. typedef union  netfs_read_logon_info            netfs_read_logon_info;
  193. typedef union  netfs_read_date_and_time         netfs_read_date_and_time;
  194. typedef union  netfs_read_eof_status            netfs_read_eof_status;
  195. typedef union  netfs_read_object                netfs_read_object;
  196. typedef union  netfs_set_object                 netfs_set_object;
  197. typedef union  netfs_delete_object              netfs_delete_object;
  198. typedef union  netfs_read_env                   netfs_read_env;
  199. typedef union  netfs_opt                        netfs_opt;
  200. typedef union  netfs_read_user_info             netfs_read_user_info;
  201. typedef union  netfs_read_version               netfs_read_version;
  202. typedef union  netfs_read_free                  netfs_read_free;
  203. typedef union  netfs_create_dir                 netfs_create_dir;
  204. typedef union  netfs_set_date_and_time          netfs_set_date_and_time;
  205. typedef union  netfs_create                     netfs_create;
  206. typedef union  netfs_read_user_free             netfs_read_user_free;
  207. typedef union  netfs_set_user_free              netfs_set_user_free;
  208. typedef union  netfs_read_user_name             netfs_read_user_name;
  209. typedef union  netfs_read_logon_info_extended   netfs_read_logon_info_extended;
  210. typedef union  netfs_read_user_info_extended    netfs_read_user_info_extended;
  211. typedef union  netfs_manager_op_read_password_count netfs_manager_op_read_password_count;
  212. typedef union  netfs_manager_op_read_password   netfs_manager_op_read_password;
  213. typedef union  netfs_manager_op_write_password  netfs_manager_op_write_password;
  214. typedef union  netfs_manager_op_add_user        netfs_manager_op_add_user;
  215. typedef union  netfs_manager_op_remove_user     netfs_manager_op_remove_user;
  216. typedef union  netfs_manager_op_set_privilege   netfs_manager_op_set_privilege;
  217. typedef union  netfs_manager_op_logoff_user     netfs_manager_op_logoff_user;
  218. typedef union  netfs_op                         netfs_op;
  219. typedef struct netfs_file_server                netfs_file_server;
  220. typedef struct netfs_file_server_context        netfs_file_server_context;
  221.  
  222. /********************
  223.  * Type definitions *
  224.  ********************/
  225. typedef byte netfs_fs_op;
  226.  
  227. typedef byte netfs_fs_op_ex_type;
  228.  
  229. typedef byte netfs_fs_op_args_type;
  230.  
  231. typedef byte netfs_fs_op_read_object_type;
  232.  
  233. typedef byte netfs_fs_op_set_object_type;
  234.  
  235. typedef byte netfs_fs_op_manager_op_type;
  236.  
  237. struct netfs_cli_request
  238.    {  char command [256];
  239.    };
  240.  
  241. struct netfs_save_request
  242.    {  bits load_addr;
  243.       bits exec_addr;
  244.       byte size [3];
  245.       char file_name [256];
  246.    };
  247.  
  248. struct netfs_save_reply
  249.    {  byte port;
  250.       byte block_limit [2];
  251.       char leaf_name [10];
  252.    };
  253.  
  254. struct netfs_save_final_reply
  255.    {  byte attr;
  256.       byte date [2];
  257.    };
  258.  
  259. struct netfs_load_request
  260.    {  char file_name [256];
  261.    };
  262.  
  263. struct netfs_load_reply
  264.    {  bits load_addr;
  265.       bits exec_addr;
  266.       byte size [3];
  267.       byte attr;
  268.       byte date [2];
  269.       char file_name [256];
  270.    };
  271.  
  272. struct netfs_ex_request
  273.    {  netfs_fs_op_ex_type ex_type;
  274.       byte entry;
  275.       byte count;
  276.       char dir_name [256];
  277.    };
  278.  
  279. struct netfs_cat_request
  280.    {  char dir_name [256];
  281.    };
  282.  
  283. struct netfs_cat_reply
  284.    {  char leaf_name [10];
  285.       char reserved1;
  286.       char owner;
  287.       byte reserved2 [3];
  288.       char disc_name [16];
  289.    };
  290.  
  291. struct netfs_open_request
  292.    {  byte error_if_absent;
  293.       byte read_only;
  294.       char file_name [256];
  295.    };
  296.  
  297. struct netfs_open_reply
  298.    {  byte handle;
  299.       char leaf_name [10];
  300.    };
  301.  
  302. struct netfs_close_request
  303.    {  byte handle;
  304.    };
  305.  
  306. struct netfs_bget_request
  307.    {  byte handle;
  308.    };
  309.  
  310. struct netfs_bget_reply
  311.    {  byte b;
  312.       byte terminator;
  313.    };
  314.  
  315. struct netfs_bput_request
  316.    {  byte handle;
  317.       byte b;
  318.    };
  319.  
  320. struct netfs_gbpb_request
  321.    {  byte handle;
  322.       byte read_next;
  323.       byte size [3];
  324.       byte ptr [3];
  325.    };
  326.  
  327. struct netfs_gbpb_reply
  328.    {  byte final_block;
  329.       byte size [3];
  330.    };
  331.  
  332. struct netfs_read_args_request
  333.    {  netfs_fs_op_args_type args_type;
  334.    };
  335.  
  336. struct netfs_read_args_reply
  337.    {  byte arg [3];
  338.    };
  339.  
  340. struct netfs_set_args_request
  341.    {  netfs_fs_op_args_type args_type;
  342.       byte arg [3];
  343.    };
  344.  
  345. struct netfs_read_disc_info_request
  346.    {  byte first;
  347.       byte count;
  348.    };
  349.  
  350. struct netfs_disc_info
  351.    {  byte phys_no;
  352.       char disc_name [16];
  353.    };
  354.  
  355. struct netfs_read_disc_info_reply
  356.    {  byte count;
  357.       netfs_disc_info info [UNKNOWN];
  358.    };
  359.  
  360. #define netfs_READ_DISC_INFO_REPLY(N) \
  361.    struct \
  362.       {  byte count; \
  363.          netfs_disc_info info [N]; \
  364.       }
  365.  
  366. #define netfs_SIZEOF_READ_DISC_INFO_REPLY(N) \
  367.    (offsetof (netfs_read_disc_info_reply, info) + \
  368.          (N)*sizeof ((netfs_read_disc_info_reply *) NULL)->info)
  369.  
  370. struct netfs_read_logon_info_request
  371.    {  byte first;
  372.       byte count;
  373.    };
  374.  
  375. /* ------------------------------------------------------------------------
  376.  * Type:          netfs_logon_info
  377.  *
  378.  * Description:   Structure repeats
  379.  *
  380.  * Fields:        user_name - User name terminated by 13
  381.  *                privilege - Privilege byte immediately follows user_name
  382.  */
  383.  
  384. struct netfs_logon_info
  385.    {  byte station;
  386.       byte net;
  387.       byte user_name [22];
  388.       byte privilege;
  389.    };
  390.  
  391. struct netfs_read_logon_info_reply
  392.    {  byte count;
  393.       netfs_logon_info info [UNKNOWN];
  394.    };
  395.  
  396. #define netfs_READ_LOGON_INFO_REPLY(N) \
  397.    struct \
  398.       {  byte count; \
  399.          netfs_logon_info info [N]; \
  400.       }
  401.  
  402. #define netfs_SIZEOF_READ_LOGON_INFO_REPLY(N) \
  403.    (offsetof (netfs_read_logon_info_reply, info) + \
  404.          (N)*sizeof ((netfs_read_logon_info_reply *) NULL)->info)
  405.  
  406. struct netfs_read_date_and_time_reply
  407.    {  byte date [2];
  408.       byte hr;
  409.       byte min;
  410.       byte s;
  411.    };
  412.  
  413. struct netfs_read_eof_status_request
  414.    {  byte handle;
  415.    };
  416.  
  417. struct netfs_read_eof_status_reply
  418.    {  byte eof_status;
  419.    };
  420.  
  421. struct netfs_read_object_request
  422.    {  netfs_fs_op_read_object_type read_type;
  423.       char file_name [256];
  424.    };
  425.  
  426. struct netfs_delete_object_request
  427.    {  char file_name [256];
  428.    };
  429.  
  430. struct netfs_delete_object_reply
  431.    {  bits load_addr;
  432.       bits exec_addr;
  433.       byte size [3];
  434.       byte attr;
  435.    };
  436.  
  437. struct netfs_read_env_reply
  438.    {  byte len;
  439.       char disc_name [16];
  440.       char csd_name [10];
  441.       char lib_name [10];
  442.    };
  443.  
  444. struct netfs_opt_request
  445.    {  byte opt;
  446.    };
  447.  
  448. struct netfs_read_user_info_request
  449.    {  char user_name [22];
  450.    };
  451.  
  452. struct netfs_read_user_info_reply
  453.    {  byte privilege;
  454.       byte station;
  455.       byte net;
  456.    };
  457.  
  458. struct netfs_read_version_reply
  459.    {  char type [10];
  460.       char version [4];
  461.    };
  462.  
  463. struct netfs_read_free_request
  464.    {  char disc_name [16];
  465.    };
  466.  
  467. struct netfs_read_free_reply
  468.    {  byte free_sector_count [3];
  469.       byte sector_count [3];
  470.    };
  471.  
  472. struct netfs_create_dir_request
  473.    {  byte sector_count;
  474.       char dir_name [256];
  475.    };
  476.  
  477. struct netfs_set_date_and_time_request
  478.    {  byte date [2];
  479.       byte hr;
  480.       byte min;
  481.       byte s;
  482.    };
  483.  
  484. struct netfs_create_request
  485.    {  bits load_addr;
  486.       bits exec_addr;
  487.       byte size [3];
  488.       char file_name [256];
  489.    };
  490.  
  491. struct netfs_create_reply
  492.    {  byte attr;
  493.       byte date [2];
  494.    };
  495.  
  496. struct netfs_read_user_free_request
  497.    {  char user_name [22];
  498.    };
  499.  
  500. struct netfs_read_user_free_reply
  501.    {  byte user_free [3];
  502.    };
  503.  
  504. struct netfs_set_user_free_request
  505.    {  byte user_free [3];
  506.       char user_name [22];
  507.    };
  508.  
  509. struct netfs_read_user_name_reply
  510.    {  char user_name [22];
  511.    };
  512.  
  513. struct netfs_logon_info_extended
  514.    {  byte station;
  515.       byte net;
  516.       byte task;
  517.       byte user_name [22];
  518.       byte privilege;
  519.    };
  520.  
  521. struct netfs_read_logon_info_extended_request
  522.    {  byte first;
  523.       byte count;
  524.    };
  525.  
  526. struct netfs_read_logon_info_extended_reply
  527.    {  byte count;
  528.       netfs_logon_info_extended info [UNKNOWN];
  529.    };
  530.  
  531. #define netfs_READ_LOGON_INFO_EXTENDED_REPLY(N) \
  532.    struct \
  533.       {  byte count; \
  534.          netfs_logon_info_extended info [N]; \
  535.       }
  536.  
  537. #define netfs_SIZEOF_READ_LOGON_INFO_EXTENDED_REPLY(N) \
  538.    (offsetof (netfs_read_logon_info_extended_reply, info) + \
  539.          (N)*sizeof ((netfs_read_logon_info_extended_reply *) NULL)->info)
  540.  
  541. struct netfs_read_user_info_extended_request
  542.    {  char user_name;
  543.    };
  544.  
  545. struct netfs_read_user_info_extended_reply
  546.    {  byte privilege;
  547.       byte station;
  548.       byte net;
  549.       byte task;
  550.    };
  551.  
  552. struct netfs_cli_info_reply
  553.    {  char file_name [10];
  554.       char reserved1;
  555.       char load_addr [9];
  556.       char exec_addr [9];
  557.       char reserved2 [2];
  558.       char length [7];
  559.       char reserved3 [2];
  560.       char access [7];
  561.       char reserved4 [4];
  562.       char date [9];
  563.       char sin [6];
  564.       byte terminator;
  565.    };
  566.  
  567. struct netfs_clii_am_reply
  568.    {  byte urd;
  569.       byte csd;
  570.       byte lib;
  571.       byte opt;
  572.    };
  573.  
  574. struct netfs_clis_disc_reply
  575.    {  byte urd;
  576.       byte csd;
  577.       byte lib;
  578.    };
  579.  
  580. struct netfs_cli_dir_reply
  581.    {  byte csd;
  582.    };
  583.  
  584. struct netfs_cli_unknown_reply
  585.    {  char command [256];
  586.    };
  587.  
  588. struct netfs_cli_lib_reply
  589.    {  byte lib;
  590.    };
  591.  
  592. struct netfs_ex_reply
  593.    {  byte ex_count;
  594.       byte dir_count;
  595.       char name [10];
  596.       bits load_addr;
  597.       bits exec_addr;
  598.       byte attr;
  599.       byte date [2];
  600.       byte sin [3];
  601.       byte size [3];
  602.    };
  603.  
  604. struct netfs_ex_text_reply
  605.    {  byte ex_count;
  606.       byte dir_count;
  607.       char text [UNKNOWN];
  608.    };
  609.  
  610. struct netfs_ex_title_reply
  611.    {  byte ex_count;
  612.       byte dir_count;
  613.       byte len;
  614.       char name [10];
  615.    };
  616.  
  617. struct netfs_ex_title_text_reply
  618.    {  byte ex_count;
  619.       byte dir_count;
  620.       char text [UNKNOWN];
  621.    };
  622.  
  623. struct netfs_read_object_stamp_reply
  624.    {  byte date [2];
  625.    };
  626.  
  627. struct netfs_read_object_load_and_exec_addr_reply
  628.    {  bits load_addr;
  629.       bits exec_addr;
  630.    };
  631.  
  632. struct netfs_read_object_size_reply
  633.    {  byte size [3];
  634.    };
  635.  
  636. struct netfs_read_object_attr_reply
  637.    {  byte attr;
  638.    };
  639.  
  640. struct netfs_read_object_all_info_reply
  641.    {  bits load_addr;
  642.       bits exec_addr;
  643.       byte size [3];
  644.       byte attr;
  645.       byte date [2];
  646.       byte access [2];
  647.    };
  648.  
  649. struct netfs_read_object_attr_and_cycle_no_reply
  650.    {  byte reserved [2];
  651.       byte len;
  652.       byte dir_name [10];
  653.       byte access;
  654.       byte count;
  655.    };
  656.  
  657. struct netfs_read_object_sin_reply
  658.    {  byte obj_type;
  659.       byte sin [6];
  660.    };
  661.  
  662. struct netfs_set_object_load_exec_and_attr_request
  663.    {  netfs_fs_op_set_object_type set_type;
  664.       bits load_addr;
  665.       bits exec_addr;
  666.       byte attr;
  667.    };
  668.  
  669. struct netfs_set_object_load_addr_request
  670.    {  netfs_fs_op_set_object_type set_type;
  671.       bits load_addr;
  672.    };
  673.  
  674. struct netfs_set_object_exec_addr_request
  675.    {  netfs_fs_op_set_object_type set_type;
  676.       bits exec_addr;
  677.    };
  678.  
  679. struct netfs_set_object_attr_request
  680.    {  netfs_fs_op_set_object_type set_type;
  681.       byte attr;
  682.    };
  683.  
  684. struct netfs_set_object_stamp_request
  685.    {  netfs_fs_op_set_object_type set_type;
  686.       byte date [2];
  687.    };
  688.  
  689. struct netfs_manager_op_read_password_count_request
  690.    {  netfs_fs_op_manager_op_type req_no;
  691.    };
  692.  
  693. struct netfs_manager_op_read_password_count_reply
  694.    {  int user_count;
  695.    };
  696.  
  697. struct netfs_manager_op_read_password_request
  698.    {  netfs_fs_op_manager_op_type req_no;
  699.       byte user_no [2];
  700.    };
  701.  
  702. struct netfs_manager_op_read_password_reply
  703.    {  int index;
  704.       byte privilege;
  705.       byte opt;
  706.       char reserved [4];
  707.       byte station;
  708.       byte net;
  709.       byte logon_permitted;
  710.       char user_name [22];
  711.       char password [23];
  712.       char urd_name [10];
  713.    };
  714.  
  715. struct netfs_manager_op_write_password_request
  716.    {  netfs_fs_op_manager_op_type req_no;
  717.       char reserved1 [4];
  718.       byte privilege;
  719.       byte opt;
  720.       byte reserved2 [6];
  721.       byte logon_permitted;
  722.       char user_name [22];
  723.       char password [23];
  724.       char urd_name [10];
  725.    };
  726.  
  727. struct netfs_manager_op_add_user_request
  728.    {  netfs_fs_op_manager_op_type req_no;
  729.       char user_name [22];
  730.    };
  731.  
  732. struct netfs_manager_op_remove_user_request
  733.    {  netfs_fs_op_manager_op_type req_no;
  734.       char user_name [22];
  735.    };
  736.  
  737. struct netfs_manager_op_set_privilege_request
  738.    {  netfs_fs_op_manager_op_type req_no;
  739.       char user_name [22];
  740.       byte privilege;
  741.    };
  742.  
  743. struct netfs_manager_op_logoff_user_request
  744.    {  netfs_fs_op_manager_op_type req_no;
  745.       char user_name [22];
  746.    };
  747.  
  748. union netfs_cli
  749.    {  netfs_cli_request request;
  750.       netfs_cli_info_reply info_reply;
  751.       netfs_clii_am_reply i_am_reply;
  752.       netfs_clis_disc_reply s_disc_reply;
  753.       netfs_cli_dir_reply dir_reply;
  754.       netfs_cli_unknown_reply unknown_reply;
  755.       netfs_cli_lib_reply lib_reply;
  756.    };
  757.  
  758. union netfs_save
  759.    {  netfs_save_request request;
  760.       netfs_save_reply reply;
  761.       netfs_save_final_reply final_reply;
  762.    };
  763.  
  764. union netfs_load
  765.    {  netfs_load_request request;
  766.       netfs_load_reply reply;
  767.    };
  768.  
  769. union netfs_ex
  770.    {  netfs_ex_request request;
  771.       netfs_ex_reply reply;
  772.       netfs_ex_text_reply text_reply;
  773.       netfs_ex_title_reply title_reply;
  774.       netfs_ex_title_text_reply title_text_reply;
  775.    };
  776.  
  777. union netfs_cat
  778.    {  netfs_cat_request request;
  779.       netfs_cat_reply reply;
  780.    };
  781.  
  782. union netfs_open
  783.    {  netfs_open_request request;
  784.       netfs_open_reply reply;
  785.    };
  786.  
  787. union netfs_close
  788.    {  netfs_close_request request;
  789.    };
  790.  
  791. union netfs_bget
  792.    {  netfs_bget_request request;
  793.       netfs_bget_reply reply;
  794.    };
  795.  
  796. union netfs_bput
  797.    {  netfs_bput_request request;
  798.    };
  799.  
  800. union netfs_gbpb
  801.    {  netfs_gbpb_request request;
  802.       netfs_gbpb_reply reply;
  803.    };
  804.  
  805. union netfs_read_args
  806.    {  netfs_read_args_request request;
  807.       netfs_read_args_reply reply;
  808.    };
  809.  
  810. union netfs_set_args
  811.    {  netfs_set_args_request request;
  812.    };
  813.  
  814. union netfs_read_disc_info
  815.    {  netfs_read_disc_info_request request;
  816.       netfs_read_disc_info_reply reply;
  817.    };
  818.  
  819. union netfs_read_logon_info
  820.    {  netfs_read_logon_info_request request;
  821.       netfs_read_logon_info_reply reply;
  822.    };
  823.  
  824. union netfs_read_date_and_time
  825.    {  netfs_read_date_and_time_reply reply;
  826.    };
  827.  
  828. union netfs_read_eof_status
  829.    {  netfs_read_eof_status_request request;
  830.       netfs_read_eof_status_reply reply;
  831.    };
  832.  
  833. union netfs_read_object
  834.    {  netfs_read_object_request request;
  835.       netfs_read_object_stamp_reply stamp_reply;
  836.       netfs_read_object_load_and_exec_addr_reply load_and_exec_addr_reply;
  837.       netfs_read_object_size_reply size_reply;
  838.       netfs_read_object_attr_reply attr_reply;
  839.       netfs_read_object_all_info_reply all_info_reply;
  840.       netfs_read_object_attr_and_cycle_no_reply attr_and_cycle_no_reply;
  841.       netfs_read_object_sin_reply sin_reply;
  842.    };
  843.  
  844. union netfs_set_object
  845.    {  netfs_set_object_load_exec_and_attr_request load_exec_and_attr_request;
  846.       netfs_set_object_load_addr_request load_addr_request;
  847.       netfs_set_object_exec_addr_request exec_addr_request;
  848.       netfs_set_object_attr_request attr_request;
  849.       netfs_set_object_stamp_request stamp_request;
  850.    };
  851.  
  852. union netfs_delete_object
  853.    {  netfs_delete_object_request request;
  854.       netfs_delete_object_reply reply;
  855.    };
  856.  
  857. union netfs_read_env
  858.    {  netfs_read_env_reply reply;
  859.    };
  860.  
  861. union netfs_opt
  862.    {  netfs_opt_request request;
  863.    };
  864.  
  865. union netfs_read_user_info
  866.    {  netfs_read_user_info_request request;
  867.       netfs_read_user_info_reply reply;
  868.    };
  869.  
  870. union netfs_read_version
  871.    {  netfs_read_version_reply reply;
  872.    };
  873.  
  874. union netfs_read_free
  875.    {  netfs_read_free_request request;
  876.       netfs_read_free_reply reply;
  877.    };
  878.  
  879. union netfs_create_dir
  880.    {  netfs_create_dir_request request;
  881.    };
  882.  
  883. union netfs_set_date_and_time
  884.    {  netfs_set_date_and_time_request request;
  885.    };
  886.  
  887. union netfs_create
  888.    {  netfs_create_request request;
  889.       netfs_create_reply reply;
  890.    };
  891.  
  892. union netfs_read_user_free
  893.    {  netfs_read_user_free_request request;
  894.       netfs_read_user_free_reply reply;
  895.    };
  896.  
  897. union netfs_set_user_free
  898.    {  netfs_set_user_free_request request;
  899.    };
  900.  
  901. union netfs_read_user_name
  902.    {  netfs_read_user_name_reply reply;
  903.    };
  904.  
  905. union netfs_read_logon_info_extended
  906.    {  netfs_read_logon_info_extended_request request;
  907.       netfs_read_logon_info_extended_reply reply;
  908.    };
  909.  
  910. union netfs_read_user_info_extended
  911.    {  netfs_read_user_info_extended_request request;
  912.       netfs_read_user_info_extended_reply reply;
  913.    };
  914.  
  915. union netfs_manager_op_read_password_count
  916.    {  netfs_manager_op_read_password_count_request request;
  917.       netfs_manager_op_read_password_count_reply reply;
  918.    };
  919.  
  920. union netfs_manager_op_read_password
  921.    {  netfs_manager_op_read_password_request request;
  922.       netfs_manager_op_read_password_reply reply;
  923.    };
  924.  
  925. union netfs_manager_op_write_password
  926.    {  netfs_manager_op_write_password_request request;
  927.    };
  928.  
  929. union netfs_manager_op_add_user
  930.    {  netfs_manager_op_add_user_request request;
  931.    };
  932.  
  933. union netfs_manager_op_remove_user
  934.    {  netfs_manager_op_remove_user_request request;
  935.    };
  936.  
  937. union netfs_manager_op_set_privilege
  938.    {  netfs_manager_op_set_privilege_request request;
  939.    };
  940.  
  941. union netfs_manager_op_logoff_user
  942.    {  netfs_manager_op_logoff_user_request request;
  943.    };
  944.  
  945. union netfs_op
  946.    {  netfs_cli cli;
  947.       netfs_save save;
  948.       netfs_load load;
  949.       netfs_ex ex;
  950.       netfs_cat cat;
  951.       netfs_open open;
  952.       netfs_close close;
  953.       netfs_bget bget;
  954.       netfs_bput bput;
  955.       netfs_gbpb gbpb;
  956.       netfs_read_args read_args;
  957.       netfs_set_args set_args;
  958.       netfs_read_disc_info read_disc_info;
  959.       netfs_read_logon_info read_logon_info;
  960.       netfs_read_date_and_time read_date_and_time;
  961.       netfs_read_eof_status read_eof_status;
  962.       netfs_read_object read_object;
  963.       netfs_set_object set_object;
  964.       netfs_delete_object delete_object;
  965.       netfs_read_env read_env;
  966.       netfs_opt opt;
  967.       netfs_read_user_info read_user_info;
  968.       netfs_read_version read_version;
  969.       netfs_read_free read_free;
  970.       netfs_create_dir create_dir;
  971.       netfs_set_date_and_time set_date_and_time;
  972.       netfs_create create;
  973.       netfs_read_user_free read_user_free;
  974.       netfs_set_user_free set_user_free;
  975.       netfs_read_user_name read_user_name;
  976.       netfs_read_logon_info_extended read_logon_info_extended;
  977.       netfs_read_user_info_extended read_user_info_extended;
  978.       netfs_manager_op_read_password_count manager_op_read_password_count;
  979.       netfs_manager_op_read_password manager_op_read_password;
  980.       netfs_manager_op_write_password manager_op_write_password;
  981.       netfs_manager_op_add_user manager_op_add_user;
  982.       netfs_manager_op_remove_user manager_op_remove_user;
  983.       netfs_manager_op_set_privilege manager_op_set_privilege;
  984.       netfs_manager_op_logoff_user manager_op_logoff_user;
  985.    };
  986.  
  987. struct netfs_file_server
  988.    {  byte station_no;
  989.       byte net_no;
  990.       byte drive;
  991.       char disc_name [16];
  992.       byte reserved;
  993.    };
  994.  
  995. typedef byte netfs_date_and_time [5];
  996.  
  997. struct netfs_file_server_context
  998.    {  byte station_no;
  999.       byte net_no;
  1000.       byte reserved1;
  1001.       char disc_name [16];
  1002.       byte reserved2;
  1003.       char user_name [22];
  1004.       byte reserved3;
  1005.       byte reserved4;
  1006.    };
  1007.  
  1008. /************************
  1009.  * Constant definitions *
  1010.  ************************/
  1011. #define netfs_LEAF_NAME_LIMIT                   10
  1012. #define netfs_DISC_NAME_LIMIT                   16
  1013. #define netfs_USER_NAME_LIMIT                   22
  1014. #define netfs_PASSWORD_LIMIT                    23
  1015. #define netfs_FILE_NAME_LIMIT                   256
  1016. #define netfs_CLI_LIMIT                         256
  1017. #define error_NET_FS_BAD_NAME                   0x10500u
  1018.       /*Bad file server name*/
  1019. #define error_NET_FS_BAD_COMMAND_CODE           0x10501u
  1020.       /*Bad file server command code*/
  1021. #define error_NET_FS_UNEXPECTED_COMMAND_CODE    0x10502u
  1022.       /*Unexpected file server command code*/
  1023. #define error_NET_FS_UNKNOWN_FUNCTION_CODE      0x10503u
  1024.       /*Unknown function code*/
  1025. #define error_NET_FS_UNKNOWN_STATION_NAME       0x10504u
  1026.       /*Unknown station name*/
  1027. #define error_NET_FS_UNKNOWN_STATION_NUMBER     0x10505u
  1028.       /*Unknown station number*/
  1029. #define error_NET_FS_STATION_NOT_FOUND          0x10506u
  1030.       /*Station name not found*/
  1031. #define error_NET_FS_FILE_SERVER_NAME_TOO_LONG  0x10507u
  1032.       /*File server name too long*/
  1033. #define error_NET_FS_BAD_FILE_SERVER_DATE       0x10508u
  1034.       /*Bad date*/
  1035. #define error_NET_FS_NET_FS_INTERNAL_ERROR      0x10509u
  1036.       /*Fatal internal error*/
  1037. #define error_NET_FS_FILE_SERVER_NOT_CAPABLE    0x1050Au
  1038.       /*Not possible on this file server*/
  1039. #define error_NET_FS_BROADCAST_SERVER_DEAD      0x1050Bu
  1040.       /*Broadcast server not responding*/
  1041. #define error_NET_FS_FILE_SERVER_ONLY24_BIT     0x1050Cu
  1042.       /*File too big*/
  1043. #define error_NET_UTILS_WRONG_VERSION           0x1053Au
  1044.       /*NetFS isn't version 5.78*/
  1045. #define error_NET_UTILS_NET_FS_NO_GO            0x1053Bu
  1046.       /*NetFS isn't running as a filing system*/
  1047. #define error_NET_UTILS_IS_THREADED             0x1053Cu
  1048.       /*You can't kill NetUtils*/
  1049. #define error_NET_FS_SET_FREE_SYNTAX            0x10540u
  1050.       /*Syntax: *SetFree <Username> <FreeSpace (in hex)>, ErrorNumber_Syntax*/
  1051. #define error_NET_FS_FS_CLI_SYNTAX              0x10541u
  1052.       /*Syntax: *FSCLI <string>, ErrorNumber_Syntax*/
  1053. #define netfs_FS_OP_CLI                         ((netfs_fs_op) 0x0u)
  1054. #define netfs_FS_OP_SAVE                        ((netfs_fs_op) 0x1u)
  1055. #define netfs_FS_OP_LOAD                        ((netfs_fs_op) 0x2u)
  1056. #define netfs_FS_OP_EX                          ((netfs_fs_op_ex_type) 0x0u)
  1057. #define netfs_FS_OP_CAT                         ((netfs_fs_op) 0x4u)
  1058. #define netfs_FS_OP_LOAD_AS                     ((netfs_fs_op) 0x5u)
  1059. #define netfs_FS_OP_OPEN                        ((netfs_fs_op) 0x6u)
  1060. #define netfs_FS_OP_CLOSE                       ((netfs_fs_op) 0x7u)
  1061. #define netfs_FS_OP_BGET                        ((netfs_fs_op) 0x8u)
  1062. #define netfs_FS_OP_BPUT                        ((netfs_fs_op) 0x9u)
  1063. #define netfs_FS_OP_GBPB_READ                   ((netfs_fs_op) 0xAu)
  1064. #define netfs_FS_OP_GBPB_WRITE                  ((netfs_fs_op) 0xBu)
  1065. #define netfs_FS_OP_READ_ARGS                   ((netfs_fs_op) 0xCu)
  1066. #define netfs_FS_OP_SET_ARGS                    ((netfs_fs_op) 0xDu)
  1067. #define netfs_FS_OP_READ_DISC_INFO              ((netfs_fs_op) 0xEu)
  1068. #define netfs_FS_OP_READ_LOGON_INFO             ((netfs_fs_op) 0xFu)
  1069. #define netfs_FS_OP_READ_DATE_AND_TIME          ((netfs_fs_op) 0x10u)
  1070. #define netfs_FS_OP_READ_EOF_STATUS             ((netfs_fs_op) 0x11u)
  1071. #define netfs_FS_OP_READ_OBJECT                 ((netfs_fs_op) 0x12u)
  1072. #define netfs_FS_OP_SET_OBJECT                  ((netfs_fs_op) 0x13u)
  1073. #define netfs_FS_OP_DELETE_OBJECT               ((netfs_fs_op) 0x14u)
  1074. #define netfs_FS_OP_READ_ENV                    ((netfs_fs_op) 0x15u)
  1075. #define netfs_FS_OP_OPT                         ((netfs_fs_op) 0x16u)
  1076. #define netfs_FS_OP_LOGOFF                      ((netfs_fs_op) 0x17u)
  1077. #define netfs_FS_OP_READ_USER_INFO              ((netfs_fs_op) 0x18u)
  1078. #define netfs_FS_OP_READ_VERSION                ((netfs_fs_op) 0x19u)
  1079. #define netfs_FS_OP_READ_FREE                   ((netfs_fs_op) 0x1Au)
  1080. #define netfs_FS_OP_CREATE_DIR                  ((netfs_fs_op) 0x1Bu)
  1081. #define netfs_FS_OP_SET_DATE_AND_TIME           ((netfs_fs_op) 0x1Cu)
  1082. #define netfs_FS_OP_CREATE                      ((netfs_fs_op) 0x1Du)
  1083. #define netfs_FS_OP_READ_USER_FREE              ((netfs_fs_op) 0x1Eu)
  1084. #define netfs_FS_OP_SET_USER_FREE               ((netfs_fs_op) 0x1Fu)
  1085. #define netfs_FS_OP_READ_USER_NAME              ((netfs_fs_op) 0x20u)
  1086. #define netfs_FS_OP_READ_LOGON_INFO_EXTENDED    ((netfs_fs_op) 0x21u)
  1087. #define netfs_FS_OP_READ_USER_INFO_EXTENDED     ((netfs_fs_op) 0x22u)
  1088. #define netfs_FS_OP_MANAGER_OP                  ((netfs_fs_op) 0x24u)
  1089. #define netfs_FS_OP_CLI_COMPLETE                ((byte) 0)
  1090. #define netfs_FS_OP_CLI_INFO                    ((byte) 4)
  1091. #define netfs_FS_OP_CLII_AM                     ((byte) 5)
  1092. #define netfs_FS_OP_CLIS_DISC                   ((byte) 6)
  1093. #define netfs_FS_OP_CLI_DIR                     ((byte) 7)
  1094. #define netfs_FS_OP_CLI_UNKNOWN                 ((byte) 8)
  1095. #define netfs_FS_OP_CLI_LIB                     ((byte) 9)
  1096. #define netfs_FS_OP_CLI_DISC_INFO               ((byte) 10)
  1097. #define netfs_FS_OP_CLI_USER_INFO               ((byte) 11)
  1098. #define netfs_FS_OP_EX_TEXT                     ((netfs_fs_op_ex_type) 0x1u)
  1099. #define netfs_FS_OP_EX_TITLE                    ((netfs_fs_op_ex_type) 0x2u)
  1100. #define netfs_FS_OP_EX_TITLE_TEXT               ((netfs_fs_op_ex_type) 0x3u)
  1101. #define netfs_FS_OP_ARGS_PTR                    ((netfs_fs_op_args_type) 0x0u)
  1102. #define netfs_FS_OP_ARGS_EXT                    ((netfs_fs_op_args_type) 0x1u)
  1103. #define netfs_FS_OP_ARGS_SIZE                   ((netfs_fs_op_args_type) 0x2u)
  1104. #define netfs_FS_OP_READ_OBJECT_STAMP           ((netfs_fs_op_read_object_type) 0x1u)
  1105. #define netfs_FS_OP_READ_OBJECT_LOAD_AND_EXEC_ADDR ((netfs_fs_op_read_object_type) 0x2u)
  1106. #define netfs_FS_OP_READ_OBJECT_SIZE            ((netfs_fs_op_read_object_type) 0x3u)
  1107. #define netfs_FS_OP_READ_OBJECT_ATTR            ((netfs_fs_op_read_object_type) 0x4u)
  1108. #define netfs_FS_OP_READ_OBJECT_ALL_INFO        ((netfs_fs_op_read_object_type) 0x5u)
  1109. #define netfs_FS_OP_READ_OBJECT_ATTR_AND_CYCLE_NO ((netfs_fs_op_read_object_type) 0x6u)
  1110. #define netfs_FS_OP_READ_OBJECT_SIN             ((netfs_fs_op_read_object_type) 0x7u)
  1111. #define netfs_FS_OP_SET_OBJECT_LOAD_EXEC_AND_ATTR ((netfs_fs_op_set_object_type) 0x1u)
  1112. #define netfs_FS_OP_SET_OBJECT_LOAD_ADDR        ((netfs_fs_op_set_object_type) 0x2u)
  1113. #define netfs_FS_OP_SET_OBJECT_EXEC_ADDR        ((netfs_fs_op_set_object_type) 0x3u)
  1114. #define netfs_FS_OP_SET_OBJECT_ATTR             ((netfs_fs_op_set_object_type) 0x4u)
  1115. #define netfs_FS_OP_SET_OBJECT_STAMP            ((netfs_fs_op_set_object_type) 0x5u)
  1116. #define netfs_FS_OP_MANAGER_OP_READ_PASSWORD_COUNT ((netfs_fs_op_manager_op_type) 0x0u)
  1117. #define netfs_FS_OP_MANAGER_OP_READ_PASSWORD    ((netfs_fs_op_manager_op_type) 0x1u)
  1118. #define netfs_FS_OP_MANAGER_OP_WRITE_PASSWORD   ((netfs_fs_op_manager_op_type) 0x2u)
  1119. #define netfs_FS_OP_MANAGER_OP_ADD_USER         ((netfs_fs_op_manager_op_type) 0x3u)
  1120. #define netfs_FS_OP_MANAGER_OP_REMOVE_USER      ((netfs_fs_op_manager_op_type) 0x4u)
  1121. #define netfs_FS_OP_MANAGER_OP_SET_PRIVILEGE    ((netfs_fs_op_manager_op_type) 0x5u)
  1122. #define netfs_FS_OP_MANAGER_OP_LOGOFF_USER      ((netfs_fs_op_manager_op_type) 0x6u)
  1123. #define netfs_FS_OP_MANAGER_OP_SHUTDOWN         ((netfs_fs_op_manager_op_type) 0x7u)
  1124. #define netfs_NO_MORE                           (-1)
  1125.  
  1126. /*************************
  1127.  * Function declarations *
  1128.  *************************/
  1129.  
  1130. #ifdef __cplusplus
  1131.    extern "C" {
  1132. #endif
  1133.  
  1134. /* ------------------------------------------------------------------------
  1135.  * Function:      netfs_read_fs_number()
  1136.  *
  1137.  * Description:   Returns the full station number of your current file
  1138.  *                server
  1139.  *
  1140.  * Output:        station_no - value of R0 on exit
  1141.  *                net_no - value of R1 on exit
  1142.  *
  1143.  * Other notes:   Calls SWI 0x40040.
  1144.  */
  1145.  
  1146. extern os_error *xnetfs_read_fs_number (byte *station_no,
  1147.       byte *net_no);
  1148. extern void netfs_read_fs_number (byte *station_no,
  1149.       byte *net_no);
  1150.  
  1151. /* ------------------------------------------------------------------------
  1152.  * Function:      netfs_set_fs_number()
  1153.  *
  1154.  * Description:   Sets the full station number used as the current file
  1155.  *                server
  1156.  *
  1157.  * Input:         station_no - value of R0 on entry
  1158.  *                net_no - value of R1 on entry
  1159.  *
  1160.  * Other notes:   Calls SWI 0x40041.
  1161.  */
  1162.  
  1163. extern os_error *xnetfs_set_fs_number (byte station_no,
  1164.       byte net_no);
  1165. __swi (0x40041) void netfs_set_fs_number (byte station_no,
  1166.       byte net_no);
  1167.  
  1168. /* ------------------------------------------------------------------------
  1169.  * Function:      netfs_read_fs_name()
  1170.  *
  1171.  * Description:   Reads the name of your current file server
  1172.  *
  1173.  * Input:         buffer - value of R1 on entry
  1174.  *                size - value of R2 on entry
  1175.  *
  1176.  * Output:        end - value of R1 on exit (X version only)
  1177.  *
  1178.  * Returns:       R1 (non-X version only)
  1179.  *
  1180.  * Other notes:   Calls SWI 0x40042.
  1181.  */
  1182.  
  1183. extern os_error *xnetfs_read_fs_name (char *buffer,
  1184.       int size,
  1185.       char **end);
  1186. extern char *netfs_read_fs_name (char *buffer,
  1187.       int size);
  1188.  
  1189. /* ------------------------------------------------------------------------
  1190.  * Function:      netfs_set_fs_name()
  1191.  *
  1192.  * Description:   Sets by name the file server used as your current one
  1193.  *
  1194.  * Input:         fs_name - value of R0 on entry
  1195.  *
  1196.  * Other notes:   Calls SWI 0x40043.
  1197.  */
  1198.  
  1199. extern os_error *xnetfs_set_fs_name (char const *fs_name);
  1200. __swi (0x40043) void netfs_set_fs_name (char const *fs_name);
  1201.  
  1202. /* ------------------------------------------------------------------------
  1203.  * Function:      netfs_read_fs_timeouts()
  1204.  *
  1205.  * Description:   Reads the current values for timeouts used by NetFS
  1206.  *
  1207.  * Output:        transmit_count - value of R0 on exit
  1208.  *                transmit_delay - value of R1 on exit
  1209.  *                peek_count - value of R2 on exit
  1210.  *                peek_delay - value of R3 on exit
  1211.  *                receive_delay - value of R4 on exit
  1212.  *                broadcast_delay - value of R5 on exit
  1213.  *
  1214.  * Other notes:   Calls SWI 0x40046.
  1215.  */
  1216.  
  1217. extern os_error *xnetfs_read_fs_timeouts (int *transmit_count,
  1218.       int *transmit_delay,
  1219.       int *peek_count,
  1220.       int *peek_delay,
  1221.       int *receive_delay,
  1222.       int *broadcast_delay);
  1223. extern void netfs_read_fs_timeouts (int *transmit_count,
  1224.       int *transmit_delay,
  1225.       int *peek_count,
  1226.       int *peek_delay,
  1227.       int *receive_delay,
  1228.       int *broadcast_delay);
  1229.  
  1230. /* ------------------------------------------------------------------------
  1231.  * Function:      netfs_set_fs_timeouts()
  1232.  *
  1233.  * Description:   Sets the current values for timeouts used by NetFS
  1234.  *
  1235.  * Input:         transmit_count - value of R0 on entry
  1236.  *                transmit_delay - value of R1 on entry
  1237.  *                peek_count - value of R2 on entry
  1238.  *                peek_delay - value of R3 on entry
  1239.  *                receive_delay - value of R4 on entry
  1240.  *                broadcast_delay - value of R5 on entry
  1241.  *
  1242.  * Other notes:   Calls SWI 0x40047.
  1243.  */
  1244.  
  1245. extern os_error *xnetfs_set_fs_timeouts (int transmit_count,
  1246.       int transmit_delay,
  1247.       int peek_count,
  1248.       int peek_delay,
  1249.       int receive_delay,
  1250.       int broadcast_delay);
  1251. extern void netfs_set_fs_timeouts (int transmit_count,
  1252.       int transmit_delay,
  1253.       int peek_count,
  1254.       int peek_delay,
  1255.       int receive_delay,
  1256.       int broadcast_delay);
  1257.  
  1258. /* ------------------------------------------------------------------------
  1259.  * Function:      netfs_do_fs_op()
  1260.  *
  1261.  * Description:   Commands the current file server to perform an operation
  1262.  *
  1263.  * Input:         fs_op - value of R0 on entry
  1264.  *                op - value of R1 on entry
  1265.  *                tx_count - value of R2 on entry
  1266.  *                size - value of R3 on entry
  1267.  *
  1268.  * Output:        status - value of R0 on exit (X version only)
  1269.  *                rx_count - value of R3 on exit
  1270.  *
  1271.  * Returns:       R0 (non-X version only)
  1272.  *
  1273.  * Other notes:   Calls SWI 0x40048.
  1274.  */
  1275.  
  1276. extern os_error *xnetfs_do_fs_op (netfs_fs_op fs_op,
  1277.       netfs_op *op,
  1278.       int tx_count,
  1279.       int size,
  1280.       int *status,
  1281.       int *rx_count);
  1282. extern int netfs_do_fs_op (netfs_fs_op fs_op,
  1283.       netfs_op *op,
  1284.       int tx_count,
  1285.       int size,
  1286.       int *rx_count);
  1287.  
  1288. /* ------------------------------------------------------------------------
  1289.  * Function:      netfs_enumerate_fs_list()
  1290.  *
  1291.  * Description:   Lists all file servers of which the NetFS software
  1292.  *                currently knows
  1293.  *
  1294.  * Input:         context - value of R0 on entry
  1295.  *                file_server - value of R1 on entry
  1296.  *                size - value of R2 on entry
  1297.  *                server_limit - value of R3 on entry
  1298.  *
  1299.  * Output:        context_out - value of R0 on exit (X version only)
  1300.  *                server_count - value of R3 on exit
  1301.  *
  1302.  * Returns:       R0 (non-X version only)
  1303.  *
  1304.  * Other notes:   Calls SWI 0x40049.
  1305.  */
  1306.  
  1307. extern os_error *xnetfs_enumerate_fs_list (int context,
  1308.       netfs_file_server *file_server,
  1309.       int size,
  1310.       int server_limit,
  1311.       int *context_out,
  1312.       int *server_count);
  1313. extern int netfs_enumerate_fs_list (int context,
  1314.       netfs_file_server *file_server,
  1315.       int size,
  1316.       int server_limit,
  1317.       int *server_count);
  1318.  
  1319. /* ------------------------------------------------------------------------
  1320.  * Function:      netfs_enumerate_fs()
  1321.  *
  1322.  * Description:   Lists all file servers to which the NetFS software is
  1323.  *                currently logged on
  1324.  *
  1325.  * Input:         context - value of R0 on entry
  1326.  *                file_server - value of R1 on entry
  1327.  *                size - value of R2 on entry
  1328.  *                server_limit - value of R3 on entry
  1329.  *
  1330.  * Output:        context_out - value of R0 on exit (X version only)
  1331.  *                server_count - value of R3 on exit
  1332.  *
  1333.  * Returns:       R0 (non-X version only)
  1334.  *
  1335.  * Other notes:   Calls SWI 0x4004A.
  1336.  */
  1337.  
  1338. extern os_error *xnetfs_enumerate_fs (int context,
  1339.       netfs_file_server *file_server,
  1340.       int size,
  1341.       int server_limit,
  1342.       int *context_out,
  1343.       int *server_count);
  1344. extern int netfs_enumerate_fs (int context,
  1345.       netfs_file_server *file_server,
  1346.       int size,
  1347.       int server_limit,
  1348.       int *server_count);
  1349.  
  1350. /* ------------------------------------------------------------------------
  1351.  * Function:      netfs_convert_date()
  1352.  *
  1353.  * Description:   Converts a file server time and date to a RISC OS time
  1354.  *                and date
  1355.  *
  1356.  * Input:         n - value of R0 on entry
  1357.  *                o - value of R1 on entry
  1358.  *
  1359.  * Other notes:   Calls SWI 0x4004B.
  1360.  */
  1361.  
  1362. extern os_error *xnetfs_convert_date (netfs_date_and_time const *n,
  1363.       os_date_and_time *o);
  1364. __swi (0x4004B) void netfs_convert_date (netfs_date_and_time const *n,
  1365.       os_date_and_time *o);
  1366.  
  1367. /* ------------------------------------------------------------------------
  1368.  * Function:      netfs_do_fs_op_to_given_fs()
  1369.  *
  1370.  * Description:   Commands a given file server to perform an operation
  1371.  *
  1372.  * Input:         fs_op - value of R0 on entry
  1373.  *                op - value of R1 on entry
  1374.  *                tx_count - value of R2 on entry
  1375.  *                size - value of R3 on entry
  1376.  *                station - value of R4 on entry
  1377.  *                net - value of R5 on entry
  1378.  *
  1379.  * Output:        status - value of R0 on exit (X version only)
  1380.  *                rx_count - value of R3 on exit
  1381.  *
  1382.  * Returns:       R0 (non-X version only)
  1383.  *
  1384.  * Other notes:   Calls SWI 0x4004C.
  1385.  */
  1386.  
  1387. extern os_error *xnetfs_do_fs_op_to_given_fs (netfs_fs_op fs_op,
  1388.       netfs_op *op,
  1389.       int tx_count,
  1390.       int size,
  1391.       byte station,
  1392.       byte net,
  1393.       int *status,
  1394.       int *rx_count);
  1395. extern int netfs_do_fs_op_to_given_fs (netfs_fs_op fs_op,
  1396.       netfs_op *op,
  1397.       int tx_count,
  1398.       int size,
  1399.       byte station,
  1400.       byte net,
  1401.       int *rx_count);
  1402.  
  1403. /* ------------------------------------------------------------------------
  1404.  * Function:      netfs_update_fs_list()
  1405.  *
  1406.  * Description:   Adds names of discs to the list of names held by NetFS
  1407.  *
  1408.  * Input:         station_no - value of R0 on entry
  1409.  *                net_no - value of R1 on entry
  1410.  *
  1411.  * Other notes:   Calls SWI 0x4004D.
  1412.  */
  1413.  
  1414. extern os_error *xnetfs_update_fs_list (byte station_no,
  1415.       byte net_no);
  1416. __swi (0x4004D) void netfs_update_fs_list (byte station_no,
  1417.       byte net_no);
  1418.  
  1419. /* ------------------------------------------------------------------------
  1420.  * Function:      netfs_enumerate_fs_contexts()
  1421.  *
  1422.  * Description:   Lists all the entries in the list of file servers to
  1423.  *                which NetFS is currently logged on
  1424.  *
  1425.  * Input:         context - value of R0 on entry
  1426.  *                file_server_context - value of R1 on entry
  1427.  *                size - value of R2 on entry
  1428.  *                server_limit - value of R3 on entry
  1429.  *
  1430.  * Output:        context_out - value of R0 on exit (X version only)
  1431.  *                server_count - value of R3 on exit
  1432.  *
  1433.  * Returns:       R0 (non-X version only)
  1434.  *
  1435.  * Other notes:   Calls SWI 0x4004E.
  1436.  */
  1437.  
  1438. extern os_error *xnetfs_enumerate_fs_contexts (int context,
  1439.       netfs_file_server_context *file_server_context,
  1440.       int size,
  1441.       int server_limit,
  1442.       int *context_out,
  1443.       int *server_count);
  1444. extern int netfs_enumerate_fs_contexts (int context,
  1445.       netfs_file_server_context *file_server_context,
  1446.       int size,
  1447.       int server_limit,
  1448.       int *server_count);
  1449.  
  1450. /* ------------------------------------------------------------------------
  1451.  * Function:      netfs_read_user_id()
  1452.  *
  1453.  * Description:   Returns the current user id if logged on to the current
  1454.  *                file server
  1455.  *
  1456.  * Input:         buffer - value of R1 on entry
  1457.  *                size - value of R2 on entry
  1458.  *
  1459.  * Output:        end - value of R1 on exit (X version only)
  1460.  *
  1461.  * Returns:       R1 (non-X version only)
  1462.  *
  1463.  * Other notes:   Calls SWI 0x4004F.
  1464.  */
  1465.  
  1466. extern os_error *xnetfs_read_user_id (char *buffer,
  1467.       int size,
  1468.       char **end);
  1469. extern char *netfs_read_user_id (char *buffer,
  1470.       int size);
  1471.  
  1472. /* ------------------------------------------------------------------------
  1473.  * Function:      netfs_get_object_uid()
  1474.  *
  1475.  * Description:   Gets a unique identifier for an object
  1476.  *
  1477.  * Input:         path_name - value of R1 on entry
  1478.  *                special - value of R6 on entry
  1479.  *
  1480.  * Output:        obj_type - value of R0 on exit (X version only)
  1481.  *                load_addr - value of R2 on exit
  1482.  *                exec_addr - value of R3 on exit
  1483.  *                size - value of R4 on exit
  1484.  *                attr - value of R5 on exit
  1485.  *                uid0 - value of R6 on exit
  1486.  *                uid1 - value of R7 on exit
  1487.  *
  1488.  * Returns:       R0 (non-X version only)
  1489.  *
  1490.  * Other notes:   Calls SWI 0x40050.
  1491.  */
  1492.  
  1493. extern os_error *xnetfs_get_object_uid (char const *path_name,
  1494.       char const *special,
  1495.       fileswitch_object_type *obj_type,
  1496.       bits *load_addr,
  1497.       bits *exec_addr,
  1498.       int *size,
  1499.       fileswitch_attr *attr,
  1500.       int *uid0,
  1501.       int *uid1);
  1502. extern fileswitch_object_type netfs_get_object_uid (char const *path_name,
  1503.       char const *special,
  1504.       bits *load_addr,
  1505.       bits *exec_addr,
  1506.       int *size,
  1507.       fileswitch_attr *attr,
  1508.       int *uid0,
  1509.       int *uid1);
  1510.  
  1511. /* ------------------------------------------------------------------------
  1512.  * Function:      netfs_enable_cache()
  1513.  *
  1514.  * Description:   Enables a suspended event task
  1515.  *
  1516.  * Other notes:   Calls SWI 0x40051.
  1517.  */
  1518.  
  1519. extern os_error *xnetfs_enable_cache (void);
  1520. __swi (0x40051) void netfs_enable_cache (void);
  1521.  
  1522. /* ------------------------------------------------------------------------
  1523.  * Function:      service_net_fs()
  1524.  *
  1525.  * Description:   Either a *Logon, a *Bye, a *SDisc or a *Mount has
  1526.  *                occurred
  1527.  *
  1528.  * Other notes:   Calls SWI 0x30 with R1 = 0x55.
  1529.  */
  1530.  
  1531. extern os_error *xservice_net_fs (void);
  1532. extern void service_net_fs (void);
  1533.  
  1534. /* ------------------------------------------------------------------------
  1535.  * Function:      service_net_fs_dying()
  1536.  *
  1537.  * Description:   NetFS is dying
  1538.  *
  1539.  * Other notes:   Calls SWI 0x30 with R1 = 0x5F.
  1540.  */
  1541.  
  1542. extern os_error *xservice_net_fs_dying (void);
  1543. extern void service_net_fs_dying (void);
  1544.  
  1545. #ifdef __cplusplus
  1546.    }
  1547. #endif
  1548.  
  1549. #endif
  1550.