/* os_win32.c */
extern int dyn_libintl_init __ARGS((char *libname));
extern void dyn_libintl_end __ARGS((void));
extern void PlatformId __ARGS((void));
extern int mch_windows95 __ARGS((void));
extern void mch_setmouse __ARGS((int on));
extern void mch_update_cursor __ARGS((void));
extern int mch_char_avail __ARGS((void));
extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
extern void mch_init __ARGS((void));
extern void mch_exit __ARGS((int r));
extern int mch_check_win __ARGS((int argc, char **argv));
extern void fname_case __ARGS((char_u *name, int len));
extern int mch_get_user_name __ARGS((char_u *s, int len));
extern void mch_get_host_name __ARGS((char_u *s, int len));
extern long mch_get_pid __ARGS((void));
extern int mch_dirname __ARGS((char_u *buf, int len));
extern long mch_getperm __ARGS((char_u *name));
extern int mch_setperm __ARGS((char_u *name, long perm));
extern void mch_hide __ARGS((char_u *name));
extern int mch_isdir __ARGS((char_u *name));
extern int mch_is_linked __ARGS((char_u *fname));
extern int mch_writable __ARGS((char_u *name));
extern int mch_can_exe __ARGS((char_u *name));
extern int mch_nodetype __ARGS((char_u *name));
extern vim_acl_T mch_get_acl __ARGS((char_u *fname));
extern void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl));
extern void mch_free_acl __ARGS((vim_acl_T acl));
extern void mch_settmode __ARGS((int tmode));
extern int mch_get_shellsize __ARGS((void));
extern void mch_set_shellsize __ARGS((void));
extern void mch_new_shellsize __ARGS((void));
extern void mch_set_winsize_now __ARGS((void));
extern int mch_call_shell __ARGS((char_u *cmd, int options));
extern void mch_set_normal_colors __ARGS((void));
extern void mch_write __ARGS((char_u *s, int len));
extern void mch_delay __ARGS((long msec, int ignoreinput));
extern int mch_remove __ARGS((char_u *name));
extern void mch_breakcheck __ARGS((void));
extern long_u mch_avail_mem __ARGS((int special));
extern int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
extern int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
extern char *default_shell __ARGS((void));
extern int mch_access __ARGS((char *n, int p));
extern int mch_open __ARGS((char *name, int flags, int mode));
extern FILE *mch_fopen __ARGS((char *name, char *mode));
extern int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
extern int myresetstkoflw __ARGS((void));
extern int get_cmd_argsW __ARGS((char ***argvp));
extern void free_cmd_argsW __ARGS((void));
extern void used_file_arg __ARGS((char *name, int literal, int full_path, int diff_mode));
extern void set_alist_count __ARGS((void));
extern void fix_arg_enc __ARGS((void));
/* vim: set ft=c : */
