246 lines
9.4 KiB
C
246 lines
9.4 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these libraries and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/* @(#)$XConsortium: ximsfunc.h /main/2 1996/05/07 14:02:55 drk $ */
|
|
|
|
#ifndef _XIMSFUNC_H_
|
|
#define _XIMSFUNC_H_ 1
|
|
|
|
|
|
/* External Functions */
|
|
|
|
/* main.c */
|
|
extern void sigExit(int sig);
|
|
extern void Exit(int err_code);
|
|
extern int NotifyErrCode(int err_code);
|
|
extern int ErrFilePathNeeded(ximsError error);
|
|
extern int InWaitingState(void);
|
|
extern void ximsMain(void);
|
|
extern void ximsFinish(void);
|
|
extern char *xims_errmsg(int err_num, void *arg1, void *arg2, void *arg3);
|
|
|
|
/* env.c */
|
|
extern int set_cmd_env(void);
|
|
extern int get_user_environ(void);
|
|
extern int expand_string(char *in_str, char *out_str, int out_len, ImsConf *ims);
|
|
extern int make_new_environ(OutEnv *oenv, UserSelection *sel);
|
|
extern int put_new_environ(OutEnv *oenv);
|
|
extern int set_remote_env(char *ptr, char *env_pass);
|
|
//extern char *xhp_xinput_name(/* locale */);
|
|
//extern char *get_real_locale(/* locale, aliases */);
|
|
|
|
/* select.c */
|
|
extern void ximsSelect(void);
|
|
extern int update_user_selection(UserSelection *sel, ImsList *list, int idx, char *host, int host_type);
|
|
extern int get_ims_idx(ImsList *list, char *name);
|
|
extern int set_ims_status(ImsEnt *ent);
|
|
extern int get_ims_list(ImsList **listp, char *locale, int fill_ent);
|
|
|
|
/* start.c */
|
|
extern void ximsStart(void);
|
|
extern void ximsWait(void);
|
|
extern void ximsWaitDone(void);
|
|
extern int is_waiting(void);
|
|
extern void set_sig_chld(int enable);
|
|
extern int im_mod_available(RunEnv *renv);
|
|
extern int mk_ims_option(char *ptr, UserSelection *sel);
|
|
extern int load_resources(void);
|
|
extern int restore_resources(void);
|
|
|
|
/* remote.c */
|
|
extern int put_remote_conf(char *locale, char *ims_name);
|
|
extern int get_remote_conf(ImsList **listp, char *hostname, char *locale, char *ims_name);
|
|
extern int exec_remote_ims(UserSelection *sel);
|
|
extern int check_hostname(char *hostname);
|
|
extern int set_remote_confdata(char *confbuf, int conflen);
|
|
extern int read_remote_confdata(char **confbuf, int *conflen);
|
|
extern int get_window_status(void);
|
|
extern int change_window_status(int status);
|
|
extern int set_window_data(int ac, char **av);
|
|
extern int get_window_data(int *acp, char ***avp);
|
|
|
|
/* action.c */
|
|
extern int invoke_action(char *action, char *host);
|
|
extern void send_dtims_msg(int msg,int errcode);
|
|
extern void dtims_msg_proc(Widget w, XtPointer cd, XEvent *event, Boolean *continue_dispatch);
|
|
|
|
/* file.c */
|
|
extern int create_xims_dir(void);
|
|
extern int init_log_file(char *org_path, int check_size);
|
|
extern int set_errorlog(char *path);
|
|
extern int read_cmd_conf(void);
|
|
extern int expand_cmd_conf(void);
|
|
extern int read_imsconf(ImsConf *conf, char *ims_name, char *ims_fname);
|
|
extern int check_ims_conf(ImsConf *ims, char *ims_name);
|
|
extern int read_localeconf(ImsList *list, char *locale_name);
|
|
extern int read_user_selection(FileSel **fselp, char *locale_name);
|
|
extern int read_selection_file(FileSel *fsel, FILE *fp);
|
|
extern int save_user_selection(UserSelection *sel, char *locale_name);
|
|
extern int get_select_mode(void);
|
|
extern int set_select_mode(int cur_mode, int new_mode);
|
|
extern int parse_protolist(char *valp);
|
|
extern int default_protocol(ImsConf *conf);
|
|
|
|
/* win.c */
|
|
extern int open_display(void);
|
|
extern void close_display(void);
|
|
extern int window_env_ok(void);
|
|
extern int init_window_env(void);
|
|
extern void end_window_env(void);
|
|
extern int clear_cmd_property(Window win);
|
|
extern int save_RM(void);
|
|
extern int merge_RM(char *res1, char *res2);
|
|
extern int restore_RM(void);
|
|
extern int start_selection_window(void);
|
|
extern int start_mode_window(int cur_mode);
|
|
extern void stop_help(void);
|
|
extern void ximsHelp(int help_type);
|
|
extern int put_msg_win(int type, char *msg);
|
|
extern void xevent_loop(void);
|
|
extern void xt_start_waiting(void);
|
|
extern void xt_stop_waiting(void);
|
|
|
|
/* util.c */
|
|
/* string */
|
|
extern char *strcpyx(char *dest, char *src);
|
|
extern char *strcpy2(char *dest, char *src1, char *src2);
|
|
extern char *newstradded(char *src1, char *src2, char *src3);
|
|
extern int str_to_int(char *ptr, int *val);
|
|
extern bool str_to_bool(char *ptr, bool def_val);
|
|
extern char *trim_line(char *ptr);
|
|
extern char **parse_strlist(register char *ptr, char sep_ch);
|
|
extern int pack_strlist(char *ptr, char **listp, char sep_ch);
|
|
extern void free_strlist(char **pp);
|
|
extern bool parse_dpy_str(char *display_str, char **host, int *dnum, int *snum, int *dnet);
|
|
extern char *std_dpy_str(char *display_str, int *snum);
|
|
/* file & dir */
|
|
extern int make_user_dir(char *path);
|
|
extern char *dirname(char *path);
|
|
extern int is_directory(char *path, int must_writable);
|
|
extern int is_regularfile(char *path);
|
|
extern int is_emptyfile(char *path);
|
|
extern int is_executable(char *path);
|
|
extern int is_writable(char *path);
|
|
extern int is_readable(char *path, int allow_empty);
|
|
/* file read */
|
|
extern int start_tag_line(char *fname);
|
|
extern int read_tag_line(FILE *fp, char **tagp, char **valp);
|
|
/* error messges */
|
|
extern void put_xims_msg(int msg_type, int err_num, void *arg1, void *arg2, void *arg3);
|
|
extern void put_xims_errmsg(int err_num, void *arg1, void *arg2, void *arg3);
|
|
extern void put_xims_warnmsg(int err_num, void *arg1, void *arg2, void *arg3);
|
|
extern void print_msg(char *fmt, void *arg1, void *arg2, void *arg3, void *arg4, void *arg5);
|
|
extern int put_xims_log(char *fmt, void *arg1, void *arg2, void *arg3);
|
|
/* clear structure */
|
|
extern void clear_ImsConf(ImsConf *ims);
|
|
extern void clear_ImsEnt(ImsEnt *ent);
|
|
extern void clear_ImsList(ImsList *list);
|
|
extern void clear_FileSel(FileSel *fsel);
|
|
extern void clear_UserSelection(UserSelection *sel);
|
|
extern void clear_RunEnv(RunEnv *renv);
|
|
extern void clear_OutEnv(OutEnv *oenv);
|
|
extern void clear_UserEnv(void);
|
|
extern void clear_CmdConf(void);
|
|
extern void clear_WinEnv(void);
|
|
extern void clear_CmdOpt(void);
|
|
extern void clear_All(void);
|
|
# ifdef DEBUG
|
|
/* print structure */
|
|
extern void pr_FileSel(FileSel *fsel);
|
|
extern void pr_UserSelection(UserSelection *sel);
|
|
extern void pr_ImsConf(ImsConf *conf, char *ims_name);
|
|
extern void pr_ImsEnt(ImsEnt *ent, int idx);
|
|
extern void pr_ImsList(ImsList *list);
|
|
extern void pr_WinEnv(WinEnv *wenv);
|
|
extern void pr_RunEnv(RunEnv *renv);
|
|
extern void pr_UserEnv(void);
|
|
extern void pr_OutEnv(OutEnv *oenv);
|
|
extern void pr_CmdConf(void);
|
|
extern void pr_CmdOpt(void);
|
|
extern void pr_OpModeFlag(void);
|
|
extern char *StateName(void);
|
|
extern char *error_name(ximsError error);
|
|
extern char *proto_name(int proto_idx);
|
|
extern char *sig_name(int sig);
|
|
extern void pr_brk(char *msg);
|
|
# endif /* DEBUG */
|
|
|
|
|
|
/* Macros */
|
|
/* memory */
|
|
#define CLR(p, st) memset((void *) p, 0, sizeof(st))
|
|
#define COPY(d, s, n, st) memcpy((void *)(d), (void *)(s), (n) * sizeof(st))
|
|
|
|
# ifdef DEBUG_MEM
|
|
void *_mp_;
|
|
|
|
#define ALLOC(n, st) (_mp_ = XtCalloc(n, sizeof(st)), \
|
|
print_msg("ALLOC(%d, " #st "): _mp_=%p sz=%d\n", n, _mp_, sizeof(st)), (st *) _mp_)
|
|
#define REALLOC(p, n, st) ( _mp = XtRealloc((char *) (p), (n) * sizeof(st)), \
|
|
print_msg("REALLOC(%p, %d, " #st "): _mp_=%p\n", p, n, _mp_), (st *) _mp_)
|
|
#define NEWSTR(s) (_mp_ = (s) && *(s) ? XtNewString(s) : NULL, \
|
|
print_msg("NEWSTR(%s): _mp_=%p\n", s, _mp_), (char *) _mp_)
|
|
#define FREE(p) (print_msg("FREE(%p)\n", p), XtFree((char *) p), (p) = 0)
|
|
#define RENEWSTR(p, s) (_mp_ = (s) && *(s) ? XtNewString(s) : NULL, \
|
|
print_msg("RENEWSTR(" #p "): %p(%s) => %p(%s)\n", p, p, _mp_, s), \
|
|
XtFree((char *) p), (p) = (char *) _mp_)
|
|
# else /* DEBUG_MEM */
|
|
#define ALLOC(n, st) (st *) XtCalloc(n, sizeof(st))
|
|
#define REALLOC(p, n, st) (st *) XtRealloc((char *) (p), (n) * sizeof(st))
|
|
#define NEWSTR(s) ((s) && *(s)) ? XtNewString(s) : NULL
|
|
#define FREE(p) XtFree((char *) p), (p) = 0
|
|
#define RENEWSTR(p, s) XtFree((char *) p), (p) = NEWSTR(s)
|
|
# endif /* DEBUG_MEM */
|
|
|
|
#define FREE_LIST(pp) free_strlist(pp), (pp) = 0
|
|
|
|
/* string */
|
|
#define is_default_name(p) (*(p) == NAME_DEFAULT_CHAR)
|
|
#define to_upper_ch(c) ((c) & ~0x20)
|
|
#define to_lower_ch(c) ((c) | 0x20)
|
|
#define to_upper_str(p) while (*(p)) *(p)++ &= ~0x20
|
|
#define to_lower_str(p) while (*(p)) *(p)++ |= 0x20
|
|
#define is_comment_char(c) ((c) == COMMENT_CHAR || (c) == COMMENT_CHAR2)
|
|
#define is_white(c) ((c) == ' ' || (c) == '\t' || (c) == '\n')
|
|
#define skip_white(p) while (is_white(*(p))) (p)++
|
|
#define next_field(p) \
|
|
do { for ((p)++; *(p) && !is_white(*(p)); (p)++) ; skip_white(p); } while (0)
|
|
#define cut_field(p) \
|
|
do { for ((p)++; *(p) && !is_white(*(p)); (p)++) ; *(p)++ = 0; skip_white(p); } while (0)
|
|
|
|
/* misc */
|
|
#define Max(a, b) ((a) < (b) ? (b) : (a))
|
|
#define Min(a, b) ((a) > (b) ? (b) : (a))
|
|
|
|
/* for DEBUG */
|
|
# ifdef DEBUG
|
|
#define DPR(msg) if (DebugLvl >= 1) print_msg msg
|
|
#define DPR2(msg) if (DebugLvl >= 2) print_msg msg
|
|
#define DPR3(msg) if (DebugLvl >= 3) print_msg msg
|
|
# else
|
|
#define DPR(msg)
|
|
#define DPR2(msg)
|
|
#define DPR3(msg)
|
|
# endif /* DEBUG */
|
|
|
|
#endif /* _XIMSFUNC_H_ */
|