3 MPSL - Minimum Profit Scripting Language
4 Copyright (C) 2003/2010 Angel Ortega <angel@triptico.com>
6 mpsl_m.c - Minimum Profit Scripting Language main()
8 This program is free software; you can redistribute it and/or
9 modify it under the terms of the GNU General Public License
10 as published by the Free Software Foundation; either version 2
11 of the License, or (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 http://www.triptico.com
37 mpdm_t
trap_func(mpdm_t args
, mpdm_t ctxt
)
39 mpdm_t c
= mpdm_aget(args
, 0);
40 mpdm_t r
= mpdm_aget(args
, 2);
42 printf("-- Code ---------------\n");
44 printf("-- Ret ---------------\n");
47 printf("Press ENTER\n");
54 int mpsl_main(int argc
, char *argv
[])
58 char *immscript
= NULL
;
64 /* skip the executable */
69 if (strcmp(argv
[0], "-v") == 0 || strcmp(argv
[0], "--help") == 0) {
70 printf("MPSL %s - Minimum Profit Scripting Language\n", VERSION
);
71 printf("Copyright (C) 2003-2010 Angel Ortega <angel@triptico.com>\n");
73 ("This software is covered by the GPL license. NO WARRANTY.\n\n");
75 printf("Usage: mpsl [-d | -s] [-e 'script' | script.mpsl ]\n\n");
80 if (strcmp(argv
[0], "-d") == 0)
83 if (strcmp(argv
[0], "-s") == 0)
86 if (strcmp(argv
[0], "-e") == 0) {
92 /* next argument is a script name; open it */
93 if ((script
= fopen(argv
[0], "r")) == NULL
) {
94 fprintf(stderr
, "Can't open '%s'\n", argv
[0]);
106 mpsl_argv(argc
, argv
);
109 mpsl_trap(MPDM_X(trap_func
));
112 if (immscript
!= NULL
) {
113 w
= mpdm_ref(MPDM_MBS(immscript
));
120 /* if line starts with #!, discard it */
121 if ((c
= getc(script
)) == '#' && (c
= getc(script
)) == '!')
122 while ((c
= getc(script
)) != EOF
&& c
!= '\n');
127 w
= mpdm_ref(MPDM_F(script
));
128 v
= mpsl_compile_file(w
, NULL
);
140 mpdm_unref(mpdm_ref(mpdm_exec(v
, NULL
, NULL
)));
145 /* prints the error, if any */
146 if ((w
= mpdm_hget_s(mpdm_root(), L
"ERROR")) != NULL
) {
147 mpdm_write_wcs(stderr
, mpdm_string(w
));
148 fprintf(stderr
, "\n");
159 int main(int argc
, char *argv
[])
161 return mpsl_main(argc
, argv
);