home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / oslib / h / netfs < prev    next >
Encoding:
Text File  |  1994-09-26  |  46.3 KB  |  1,513 lines

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