Changeset 38aaacc2 in mainline for uspace/app/sbi/src/builtin/bi_fun.c
- Timestamp:
- 2010-04-23T21:41:10Z (14 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f4f866c
- Parents:
- 074444f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/sbi/src/builtin/bi_fun.c
r074444f r38aaacc2 44 44 #include "bi_fun.h" 45 45 46 static void bi_fun_builtin_write(run_t *run); 46 47 static void bi_fun_builtin_writeline(run_t *run); 47 48 static void bi_fun_task_exec(run_t *run); 48 49 49 /** Declare builtin functions. */ 50 /** Declare builtin functions. 51 * 52 * @param bi Builtin object 53 */ 50 54 void bi_fun_declare(builtin_t *bi) 51 55 { … … 63 67 csi = stree_csi_new(csi_class); 64 68 csi->name = ident; 69 list_init(&csi->targ); 65 70 list_init(&csi->members); 66 71 … … 75 80 list_append(&bi->program->module->members, modm); 76 81 82 /* Declare Builtin.Write(). */ 83 84 fun_sym = builtin_declare_fun(csi, "Write"); 85 builtin_fun_add_arg(fun_sym, "arg"); 86 77 87 /* Declare Builtin.WriteLine(). */ 78 88 … … 88 98 } 89 99 90 /** Bind builtin functions. */ 100 /** Bind builtin functions. 101 * 102 * @param bi Builtin object 103 */ 91 104 void bi_fun_bind(builtin_t *bi) 92 105 { 106 builtin_fun_bind(bi, "Builtin", "Write", bi_fun_builtin_write); 93 107 builtin_fun_bind(bi, "Builtin", "WriteLine", bi_fun_builtin_writeline); 94 108 builtin_fun_bind(bi, "Task", "Exec", bi_fun_task_exec); 95 109 } 96 110 97 /** Write a line of output. */ 98 static void bi_fun_builtin_writeline(run_t *run) 111 /** Write to the console. 112 * 113 * @param run Runner object 114 */ 115 static void bi_fun_builtin_write(run_t *run) 99 116 { 100 117 rdata_var_t *var; … … 103 120 104 121 #ifdef DEBUG_RUN_TRACE 105 printf("Called Builtin.Write Line()\n");122 printf("Called Builtin.Write()\n"); 106 123 #endif 107 124 var = run_local_vars_lookup(run, strtab_get_sid("arg")); … … 109 126 110 127 switch (var->vc) { 128 case vc_bool: 129 printf("%s", var->u.bool_v->value ? "true" : "false"); 130 break; 111 131 case vc_char: 112 132 rc = bigint_get_value_int(&var->u.char_v->value, &char_val); 113 133 if (rc == EOK) 114 printf("%lc \n", char_val);134 printf("%lc", char_val); 115 135 else 116 printf("??? \n");136 printf("???"); 117 137 break; 118 138 case vc_int: 119 139 bigint_print(&var->u.int_v->value); 120 putchar('\n');121 140 break; 122 141 case vc_string: 123 printf("%s \n", var->u.string_v->value);142 printf("%s", var->u.string_v->value); 124 143 break; 125 144 default: 126 printf("Unimplemented: writeLine() with unsupported type.\n"); 127 exit(1); 128 } 129 } 130 131 /** Start an executable and wait for it to finish. */ 145 printf("Unimplemented: Write() with unsupported type.\n"); 146 exit(1); 147 } 148 } 149 150 /** Write a line of output. 151 * 152 * @param run Runner object 153 */ 154 static void bi_fun_builtin_writeline(run_t *run) 155 { 156 #ifdef DEBUG_RUN_TRACE 157 printf("Called Builtin.WriteLine()\n"); 158 #endif 159 bi_fun_builtin_write(run); 160 putchar('\n'); 161 } 162 163 /** Start an executable and wait for it to finish. 164 * 165 * @param run Runner object 166 */ 132 167 static void bi_fun_task_exec(run_t *run) 133 168 { … … 137 172 rdata_var_t *arg; 138 173 int idx, dim; 139 c har **cmd;174 const char **cmd; 140 175 141 176 #ifdef DEBUG_RUN_TRACE … … 178 213 cmd[dim] = '\0'; 179 214 180 if (os_exec( cmd) != EOK) {215 if (os_exec((char * const *)cmd) != EOK) { 181 216 printf("Error: Exec failed.\n"); 182 217 exit(1);
Note:
See TracChangeset
for help on using the changeset viewer.