/* os_unix.c */
extern void mch_write __ARGS((char_u *s, int len));
extern int mch_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
extern int mch_char_avail __ARGS((void));
extern long_u mch_total_mem __ARGS((int special));
extern void mch_delay __ARGS((long msec, int ignoreinput));
extern int mch_stackcheck __ARGS((char *p));
extern void mch_startjmp __ARGS((void));
extern void mch_endjmp __ARGS((void));
extern void mch_didjmp __ARGS((void));
extern void mch_suspend __ARGS((void));
extern void mch_init __ARGS((void));
extern void reset_signals __ARGS((void));
extern int vim_handle_signal __ARGS((int sig));
extern int mch_check_win __ARGS((int argc, char **argv));
extern int mch_input_isatty __ARGS((void));
extern int mch_can_restore_title __ARGS((void));
extern int mch_can_restore_icon __ARGS((void));
extern void mch_settitle __ARGS((char_u *title, char_u *icon));
extern void mch_restore_title __ARGS((int which));
extern int vim_is_xterm __ARGS((char_u *name));
extern int use_xterm_mouse __ARGS((void));
extern int vim_is_iris __ARGS((char_u *name));
extern int vim_is_vt300 __ARGS((char_u *name));
extern int vim_is_fastterm __ARGS((char_u *name));
extern int mch_get_user_name __ARGS((char_u *s, int len));
extern int mch_get_uname __ARGS((uid_t uid, 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 void slash_adjust __ARGS((char_u *p));
extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
extern int mch_isFullName __ARGS((char_u *fname));
extern void fname_case __ARGS((char_u *name, int len));
extern long mch_getperm __ARGS((char_u *name));
extern int mch_setperm __ARGS((char_u *name, long perm));
extern vim_acl_T mch_get_acl __ARGS((char_u *fname));
extern void mch_set_acl __ARGS((char_u *fname, vim_acl_T aclent));
extern void mch_free_acl __ARGS((vim_acl_T aclent));
extern void mch_hide __ARGS((char_u *name));
extern int mch_isdir __ARGS((char_u *name));
extern int mch_can_exe __ARGS((char_u *name));
extern int mch_nodetype __ARGS((char_u *name));
extern void mch_early_init __ARGS((void));
extern void mch_free_mem __ARGS((void));
extern void mch_exit __ARGS((int r));
extern void mch_settmode __ARGS((int tmode));
extern void get_stty __ARGS((void));
extern void mch_setmouse __ARGS((int on));
extern void check_mouse_termcode __ARGS((void));
extern int mch_screenmode __ARGS((char_u *arg));
extern int mch_get_shellsize __ARGS((void));
extern void mch_set_shellsize __ARGS((void));
extern void mch_new_shellsize __ARGS((void));
extern int mch_call_shell __ARGS((char_u *cmd, int options));
extern void mch_breakcheck __ARGS((void));
extern int mch_expandpath __ARGS((garray_T *gap, char_u *path, int flags));
extern int mch_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
extern int mch_has_exp_wildcard __ARGS((char_u *p));
extern int mch_has_wildcard __ARGS((char_u *p));
extern int mch_libcall __ARGS((char_u *libname, char_u *funcname, char_u *argstring, int argint, char_u **string_result, int *number_result));
extern void setup_term_clip __ARGS((void));
extern void start_xterm_trace __ARGS((int button));
extern void stop_xterm_trace __ARGS((void));
extern void clear_xterm_clip __ARGS((void));
extern int clip_xterm_own_selection __ARGS((VimClipboard *cbd));
extern void clip_xterm_lose_selection __ARGS((VimClipboard *cbd));
extern void clip_xterm_request_selection __ARGS((VimClipboard *cbd));
extern void clip_xterm_set_selection __ARGS((VimClipboard *cbd));
extern int xsmp_handle_requests __ARGS((void));
extern void xsmp_init __ARGS((void));
extern void xsmp_close __ARGS((void));
/* vim: set ft=c : */
