1/*
2 * Author:      William Chia-Wei Cheng (bill.cheng@acm.org)
3 *
4 * Copyright (C) 2001-2009, William Chia-Wei Cheng.
5 *
6 * This file may be distributed under the terms of the Q Public License
7 * as defined by Trolltech AS of Norway and appearing in the file
8 * LICENSE.QPL included in the packaging of this file.
9 *
10 * THIS FILE IS PROVIDED AS IS WITH NO WARRANTY OF ANY KIND, INCLUDING
11 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
12 * PURPOSE.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL,
13 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14 * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
15 * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
16 * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17 *
18 * @(#)$Header: /mm2/home/cvs/bc-src/tgif/exec.e,v 1.8 2011/05/16 16:21:57 william Exp $
19 */
20
21#ifndef _EXEC_E_
22#define _EXEC_E_
23
24#include "list.e"
25
26extern int		execAnimating;
27extern int		execAnimateRedraw;
28extern int		execCurDepth;
29extern int		replaceAttrFirstValueRedraw;
30extern int		execNavigateBack;
31extern int		userAbortExec;
32
33extern struct AttrRec	* warpToAttr;
34
35extern char		* cmdToExecAfterHyperJump;
36
37extern struct StrRec	* topTmpStr;
38extern struct StrRec	* botTmpStr;
39
40typedef struct tagReplAttrValueCallbackInfo {
41   struct ObjRec *obj_ptr; /* a top level object */
42   struct AttrRec *attr_ptr;
43   char *new_attr_value;
44   void *pv_userdata;
45} ReplAttrValueCallbackInfo;
46
47typedef int (ReplAttrValueCallback)ARGS_DECL((ReplAttrValueCallbackInfo*));
48
49#ifdef _INCLUDE_FROM_EXEC_C_
50#undef extern
51#define extern
52#endif /*_INCLUDE_FROM_EXEC_C_*/
53
54extern void	CleanTmpStr ARGS_DECL((void));
55extern int	PrependToTmpStr ARGS_DECL((char*));
56extern int	AppendToTmpStr ARGS_DECL((char*));
57extern int	ExecuteCmdGetResult ARGS_DECL((char*, CVList*, int max_lines));
58extern struct ObjRec	* FindObjWithName ARGS_DECL((struct ObjRec *BotObj,
59			                             struct ObjRec *ObjPtr,
60			                             char *ObjName,
61			                             int InsideRootObj,
62			                             int InsideThisObj,
63			                             struct ObjRec **OwnerObj,
64			                             struct ObjRec **TopOwner));
65
66extern int	PipeReachedEOF ARGS_DECL((FILE*));
67extern int	WaitForEvent ARGS_DECL((FILE*, int fp_is_pipe,
68		                        int fp_is_named_pipe, int *pn_quit,
69		                        int what_to_do_with_x_events,
70		                        AbortCallbackFunc*, void*));
71extern int	DoLaunch ARGS_DECL((struct AttrRec *, struct ObjRec *));
72extern void	SetReplaceAttrValueCallback ARGS_DECL((ReplAttrValueCallback*,
73		                                       void *pv_userdata));
74extern int	ReplaceAttrFirstValue ARGS_DECL((struct ObjRec *,
75		                                 struct AttrRec *, char *));
76extern int	ReplaceAttrAllValues ARGS_DECL((struct ObjRec *,
77		                                struct AttrRec *,
78		                                struct StrRec **ppTopStr,
79		                                struct StrRec **ppBotStr));
80extern void	JustReadFileIntoAttr ARGS_DECL((FILE*, struct AttrRec *attr_ptr,
81		                                struct ObjRec *attr_owner_obj));
82extern int	DoExec ARGS_DECL((struct AttrRec *, struct ObjRec *));
83extern void	ResetExec ARGS_DECL((int nStart));
84extern void	ExecCmdsFromFile ARGS_DECL((char*));
85extern void	ExecCmdsFromTmp ARGS_DECL((char *tmp_fname));
86extern void	StartExecCmdsFromFile ARGS_DECL((void));
87extern int	BeginExecCommandsFromBuffer ARGS_DECL((void));
88extern int	ExecACommandFromBuffer ARGS_DECL((char *buf, int *pn_quit));
89extern void	EndExecCommandsFromBuffer ARGS_DECL((void));
90extern void	CleanUpExec ARGS_DECL((void));
91extern void	InitExec ARGS_DECL((void));
92
93#ifdef _INCLUDE_FROM_EXEC_C_
94#undef extern
95#ifndef _NO_RECURSIVE_EXTERN
96#define extern extern
97#endif /* ~_NO_RECURSIVE_EXTERN */
98#endif /*_INCLUDE_FROM_EXEC_C_*/
99
100#endif /*_EXEC_E_*/
101