/* os_amiga.c */
void win_resize_on(void);
void win_resize_off(void);
void mch_write(char_u *p, int len);
int mch_inchar(char_u *buf, int maxlen, long time, int tb_change_cnt);
int mch_char_avail(void);
long_u mch_avail_mem(int special);
void mch_delay(long msec, int ignoreinput);
void mch_suspend(void);
void mch_init(void);
int mch_check_win(int argc, char **argv);
int mch_input_isatty(void);
void fname_case(char_u *name, int len);
void mch_settitle(char_u *title, char_u *icon);
void mch_restore_title(int which);
int mch_can_restore_title(void);
int mch_can_restore_icon(void);
int mch_get_user_name(char_u *s, int len);
void mch_get_host_name(char_u *s, int len);
long mch_get_pid(void);
int mch_dirname(char_u *buf, int len);
int mch_FullName(char_u *fname, char_u *buf, int len, int force);
int mch_isFullName(char_u *fname);
long mch_getperm(char_u *name);
int mch_setperm(char_u *name, long perm);
void mch_hide(char_u *name);
int mch_isdir(char_u *name);
int mch_mkdir(char_u *name);
int mch_can_exe(char_u *name, char_u **path, int use_path);
int mch_nodetype(char_u *name);
void mch_early_init(void);
void mch_exit(int r);
void mch_settmode(int tmode);
int mch_screenmode(char_u *arg);
int mch_get_shellsize(void);
void mch_set_shellsize(void);
void mch_new_shellsize(void);
int mch_call_shell(char_u *cmd, int options);
void mch_breakcheck(void);
long Chk_Abort(void);
int mch_expandpath(garray_T *gap, char_u *pat, int flags);
int mch_has_exp_wildcard(char_u *p);
int mch_has_wildcard(char_u *p);
char_u *mch_getenv(char_u *var);
int mch_setenv(char *var, char *value, int x);
/* vim: set ft=c : */
