Changeset 4f351432 in mainline for uspace/app
- Timestamp:
- 2012-08-16T22:17:52Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2568c94
- Parents:
- 83298e8 (diff), 6d5e378 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)links above to see all the changes relative to each parent. - Location:
- uspace/app
- Files:
-
- 7 added
- 11 edited
-
bdsh/cmds/modules/bdd/bdd.c (modified) (1 diff)
-
bdsh/input.c (modified) (1 diff)
-
blkdump/blkdump.c (modified) (1 diff)
-
edit/edit.c (modified) (33 diffs)
-
edit/sheet.c (modified) (3 diffs)
-
edit/sheet.h (modified) (2 diffs)
-
edit/sheet_impl.h (added)
-
ext2info/ext2info.c (modified) (1 diff)
-
init/init.c (modified) (9 diffs)
-
mkexfat/mkexfat.c (modified) (1 diff)
-
mkfat/mkfat.c (modified) (1 diff)
-
mkmfs/mkmfs.c (modified) (1 diff)
-
vdemo/Makefile (added)
-
vdemo/vdemo.c (added)
-
vlaunch/Makefile (added)
-
vlaunch/vlaunch.c (added)
-
vterm/Makefile (added)
-
vterm/vterm.c (added)
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/bdsh/cmds/modules/bdd/bdd.c
r83298e8 r4f351432 38 38 #include "cmds.h" 39 39 40 #include < libblock.h>40 #include <block.h> 41 41 #include <loc.h> 42 42 #include <errno.h> -
uspace/app/bdsh/input.c
r83298e8 r4f351432 268 268 if (rc != EOK) { 269 269 /* Error in communication with console */ 270 cli_quit = 1; 270 271 return; 271 272 } -
uspace/app/blkdump/blkdump.c
r83298e8 r4f351432 40 40 #include <stdio.h> 41 41 #include <stdlib.h> 42 #include < libblock.h>42 #include <block.h> 43 43 #include <mem.h> 44 44 #include <loc.h> -
uspace/app/edit/edit.c
r83298e8 r4f351432 91 91 typedef struct { 92 92 char *file_name; 93 sheet_t sh;93 sheet_t *sh; 94 94 } doc_t; 95 95 … … 126 126 static int file_save_range(char const *fname, spt_t const *spos, 127 127 spt_t const *epos); 128 static char *filename_prompt(char const *prompt, char const *init_value);129 128 static char *range_get_str(spt_t const *spos, spt_t const *epos); 129 130 static char *prompt(char const *prompt, char const *init_value); 130 131 131 132 static void pane_text_display(void); … … 142 143 static void caret_move_word_left(void); 143 144 static void caret_move_word_right(void); 145 static void caret_move_to_line(int row); 146 static void caret_go_to_line_ask(void); 144 147 145 148 static bool selection_active(void); … … 172 175 coord_t coord; 173 176 bool new_file; 177 int rc; 174 178 175 179 spt_t pt; … … 186 190 187 191 /* Start with an empty sheet. */ 188 sheet_init(&doc.sh); 192 rc = sheet_create(&doc.sh); 193 if (rc != EOK) { 194 printf("Out of memory.\n"); 195 return -1; 196 } 189 197 190 198 /* Place caret at the beginning of file. */ 191 199 coord.row = coord.column = 1; 192 sheet_get_cell_pt( &doc.sh, &coord, dir_before, &pt);193 sheet_place_tag( &doc.sh, &pt, &pane.caret_pos);200 sheet_get_cell_pt(doc.sh, &coord, dir_before, &pt); 201 sheet_place_tag(doc.sh, &pt, &pane.caret_pos); 194 202 pane.ideal_column = coord.column; 195 203 … … 213 221 /* Place selection start tag. */ 214 222 tag_get_pt(&pane.caret_pos, &pt); 215 sheet_place_tag( &doc.sh, &pt, &pane.sel_start);223 sheet_place_tag(doc.sh, &pt, &pane.sel_start); 216 224 217 225 /* Initial display */ … … 404 412 caret_move_word_left(); 405 413 break; 414 case KC_L: 415 caret_go_to_line_ask(); 416 break; 406 417 default: 407 418 break; … … 423 434 } 424 435 425 static void key_handle_movement(unsigned int key, bool select) 436 /** Move caret while preserving or resetting selection. */ 437 static void caret_movement(int drow, int dcolumn, enum dir_spec align_dir, 438 bool select) 426 439 { 427 440 spt_t pt; … … 435 448 had_sel = !spt_equal(&caret_pt, &pt); 436 449 437 switch (key) { 438 case KC_LEFT: 439 caret_move(0, -1, dir_before); 440 break; 441 case KC_RIGHT: 442 caret_move(0, 0, dir_after); 443 break; 444 case KC_UP: 445 caret_move(-1, 0, dir_before); 446 break; 447 case KC_DOWN: 448 caret_move(+1, 0, dir_before); 449 break; 450 case KC_HOME: 451 caret_move(0, -ED_INFTY, dir_before); 452 break; 453 case KC_END: 454 caret_move(0, +ED_INFTY, dir_before); 455 break; 456 case KC_PAGE_UP: 457 caret_move(-pane.rows, 0, dir_before); 458 break; 459 case KC_PAGE_DOWN: 460 caret_move(+pane.rows, 0, dir_before); 461 break; 462 default: 463 break; 464 } 450 caret_move(drow, dcolumn, align_dir); 465 451 466 452 if (select == false) { 467 453 /* Move sel_start to the same point as caret. */ 468 sheet_remove_tag( &doc.sh, &pane.sel_start);454 sheet_remove_tag(doc.sh, &pane.sel_start); 469 455 tag_get_pt(&pane.caret_pos, &pt); 470 sheet_place_tag( &doc.sh, &pt, &pane.sel_start);456 sheet_place_tag(doc.sh, &pt, &pane.sel_start); 471 457 } 472 458 … … 487 473 } 488 474 475 static void key_handle_movement(unsigned int key, bool select) 476 { 477 switch (key) { 478 case KC_LEFT: 479 caret_movement(0, -1, dir_before, select); 480 break; 481 case KC_RIGHT: 482 caret_movement(0, 0, dir_after, select); 483 break; 484 case KC_UP: 485 caret_movement(-1, 0, dir_before, select); 486 break; 487 case KC_DOWN: 488 caret_movement(+1, 0, dir_before, select); 489 break; 490 case KC_HOME: 491 caret_movement(0, -ED_INFTY, dir_before, select); 492 break; 493 case KC_END: 494 caret_movement(0, +ED_INFTY, dir_before, select); 495 break; 496 case KC_PAGE_UP: 497 caret_movement(-pane.rows, 0, dir_before, select); 498 break; 499 case KC_PAGE_DOWN: 500 caret_movement(+pane.rows, 0, dir_before, select); 501 break; 502 default: 503 break; 504 } 505 } 506 489 507 /** Save the document. */ 490 508 static int file_save(char const *fname) … … 520 538 char *fname; 521 539 522 fname = filename_prompt("Save As", old_fname);540 fname = prompt("Save As", old_fname); 523 541 if (fname == NULL) { 524 542 status_display("Save cancelled."); … … 535 553 } 536 554 537 /** Ask for a file name. */538 static char * filename_prompt(char const *prompt, char const *init_value)555 /** Ask for a string. */ 556 static char *prompt(char const *prompt, char const *init_value) 539 557 { 540 558 kbd_event_t ev; … … 657 675 658 676 do { 659 sheet_copy_out( &doc.sh, &sp, epos, buf, BUF_SIZE, &bep);677 sheet_copy_out(doc.sh, &sp, epos, buf, BUF_SIZE, &bep); 660 678 bytes = str_size(buf); 661 679 … … 692 710 693 711 while (true) { 694 sheet_copy_out( &doc.sh, &sp, epos, &buf[bpos], buf_size - bpos,712 sheet_copy_out(doc.sh, &sp, epos, &buf[bpos], buf_size - bpos, 695 713 &bep); 696 714 bytes = str_size(&buf[bpos]); … … 714 732 int sh_rows, rows; 715 733 716 sheet_get_num_rows( &doc.sh, &sh_rows);734 sheet_get_num_rows(doc.sh, &sh_rows); 717 735 rows = min(sh_rows - pane.sh_row + 1, pane.rows); 718 736 … … 784 802 rbc.row = pane.sh_row + i; 785 803 rbc.column = pane.sh_column; 786 sheet_get_cell_pt( &doc.sh, &rbc, dir_before, &rb);804 sheet_get_cell_pt(doc.sh, &rbc, dir_before, &rb); 787 805 788 806 /* Ending point for row display */ 789 807 rec.row = pane.sh_row + i; 790 808 rec.column = pane.sh_column + pane.columns; 791 sheet_get_cell_pt( &doc.sh, &rec, dir_before, &re);809 sheet_get_cell_pt(doc.sh, &rec, dir_before, &re); 792 810 793 811 /* Copy the text of the row to the buffer. */ 794 sheet_copy_out( &doc.sh, &rb, &re, row_buf, ROW_BUF_SIZE, &dep);812 sheet_copy_out(doc.sh, &rb, &re, row_buf, ROW_BUF_SIZE, &dep); 795 813 796 814 /* Display text from the buffer. */ … … 861 879 spt_t caret_pt; 862 880 coord_t coord; 881 int last_row; 863 882 864 883 tag_get_pt(&pane.caret_pos, &caret_pt); 865 884 spt_get_coord(&caret_pt, &coord); 866 885 886 sheet_get_num_rows(doc.sh, &last_row); 887 867 888 const char *fname = (doc.file_name != NULL) ? doc.file_name : "<unnamed>"; 868 889 869 890 console_set_pos(con, 0, scr_rows - 1); 870 891 console_set_style(con, STYLE_INVERTED); 871 int n = printf(" %d, %d : File '%s'. Ctrl-Q Quit Ctrl-S Save "872 "Ctrl-E Save As", coord.row, coord.column, fname);892 int n = printf(" %d, %d (%d): File '%s'. Ctrl-Q Quit Ctrl-S Save " 893 "Ctrl-E Save As", coord.row, coord.column, last_row, fname); 873 894 874 895 int pos = scr_columns - 1 - n; … … 906 927 cbuf[offs] = '\0'; 907 928 908 (void) sheet_insert( &doc.sh, &pt, dir_before, cbuf);929 (void) sheet_insert(doc.sh, &pt, dir_before, cbuf); 909 930 910 931 pane.rflags |= REDRAW_ROW; … … 923 944 924 945 coord.column -= 1; 925 sheet_get_cell_pt( &doc.sh, &coord, dir_before, &sp);926 927 (void) sheet_delete( &doc.sh, &sp, &ep);946 sheet_get_cell_pt(doc.sh, &coord, dir_before, &sp); 947 948 (void) sheet_delete(doc.sh, &sp, &ep); 928 949 929 950 pane.rflags |= REDRAW_ROW; … … 941 962 spt_get_coord(&sp, &sc); 942 963 943 sheet_get_cell_pt( &doc.sh, &sc, dir_after, &ep);964 sheet_get_cell_pt(doc.sh, &sc, dir_after, &ep); 944 965 spt_get_coord(&ep, &ec); 945 966 946 (void) sheet_delete( &doc.sh, &sp, &ep);967 (void) sheet_delete(doc.sh, &sp, &ep); 947 968 948 969 pane.rflags |= REDRAW_ROW; … … 1016 1037 else { 1017 1038 coord.row--; 1018 sheet_get_row_width( &doc.sh, coord.row, &coord.column);1039 sheet_get_row_width(doc.sh, coord.row, &coord.column); 1019 1040 } 1020 1041 } 1021 1042 if (drow > 0) { 1022 sheet_get_num_rows( &doc.sh, &num_rows);1043 sheet_get_num_rows(doc.sh, &num_rows); 1023 1044 if (coord.row > num_rows) coord.row = num_rows; 1024 1045 } … … 1033 1054 * coordinates. The character can be wider than one cell (e.g. tab). 1034 1055 */ 1035 sheet_get_cell_pt( &doc.sh, &coord, align_dir, &pt);1036 sheet_remove_tag( &doc.sh, &pane.caret_pos);1037 sheet_place_tag( &doc.sh, &pt, &pane.caret_pos);1056 sheet_get_cell_pt(doc.sh, &coord, align_dir, &pt); 1057 sheet_remove_tag(doc.sh, &pane.caret_pos); 1058 sheet_place_tag(doc.sh, &pt, &pane.caret_pos); 1038 1059 1039 1060 /* For non-vertical movement set the new value for @c ideal_column. */ … … 1055 1076 tag_get_pt(&pane.caret_pos, &pt); 1056 1077 1057 sheet_remove_tag( &doc.sh, &pane.sel_start);1058 sheet_place_tag( &doc.sh, &pt, &pane.sel_start);1078 sheet_remove_tag(doc.sh, &pane.sel_start); 1079 sheet_place_tag(doc.sh, &pt, &pane.sel_start); 1059 1080 } while (!pt_is_word_beginning(&pt)); 1060 1081 … … 1071 1092 tag_get_pt(&pane.caret_pos, &pt); 1072 1093 1073 sheet_remove_tag( &doc.sh, &pane.sel_start);1074 sheet_place_tag( &doc.sh, &pt, &pane.sel_start);1094 sheet_remove_tag(doc.sh, &pane.sel_start); 1095 sheet_place_tag(doc.sh, &pt, &pane.sel_start); 1075 1096 } while (!pt_is_word_beginning(&pt)); 1076 1097 1077 1098 pane.rflags |= REDRAW_TEXT; 1078 1099 } 1100 1101 /** Change the caret position to a beginning of a given line 1102 */ 1103 static void caret_move_to_line(int row) 1104 { 1105 spt_t pt; 1106 coord_t coord; 1107 1108 tag_get_pt(&pane.caret_pos, &pt); 1109 spt_get_coord(&pt, &coord); 1110 1111 caret_movement(row - coord.row, 0, dir_before, false); 1112 } 1113 1114 /** Ask for line and go to it. */ 1115 static void caret_go_to_line_ask(void) 1116 { 1117 char *sline; 1118 1119 sline = prompt("Go to line", ""); 1120 if (sline == NULL) { 1121 status_display("Go to line cancelled."); 1122 return; 1123 } 1124 1125 char *endptr; 1126 int line = strtol(sline, &endptr, 10); 1127 if (*endptr != '\0') { 1128 status_display("Invalid number entered."); 1129 return; 1130 } 1131 1132 caret_move_to_line(line); 1133 } 1134 1079 1135 1080 1136 /** Check for non-empty selection. */ … … 1115 1171 1116 1172 if (rel < 0) 1117 sheet_delete( &doc.sh, &pa, &pb);1173 sheet_delete(doc.sh, &pa, &pb); 1118 1174 else 1119 sheet_delete( &doc.sh, &pb, &pa);1175 sheet_delete(doc.sh, &pb, &pa); 1120 1176 1121 1177 if (ca.row == cb.row) … … 1139 1195 static void selection_sel_range(spt_t pa, spt_t pb) 1140 1196 { 1141 sheet_remove_tag( &doc.sh, &pane.sel_start);1142 sheet_place_tag( &doc.sh, &pa, &pane.sel_start);1143 sheet_remove_tag( &doc.sh, &pane.caret_pos);1144 sheet_place_tag( &doc.sh, &pb, &pane.caret_pos);1197 sheet_remove_tag(doc.sh, &pane.sel_start); 1198 sheet_place_tag(doc.sh, &pa, &pane.sel_start); 1199 sheet_remove_tag(doc.sh, &pane.caret_pos); 1200 sheet_place_tag(doc.sh, &pb, &pane.caret_pos); 1145 1201 1146 1202 pane.rflags |= REDRAW_TEXT; … … 1225 1281 1226 1282 coord.row = coord.column = 1; 1227 sheet_get_cell_pt( &doc.sh, &coord, dir_before, pt);1283 sheet_get_cell_pt(doc.sh, &coord, dir_before, pt); 1228 1284 } 1229 1285 … … 1234 1290 int num_rows; 1235 1291 1236 sheet_get_num_rows( &doc.sh, &num_rows);1292 sheet_get_num_rows(doc.sh, &num_rows); 1237 1293 coord.row = num_rows + 1; 1238 1294 coord.column = 1; 1239 1295 1240 sheet_get_cell_pt( &doc.sh, &coord, dir_after, pt);1296 sheet_get_cell_pt(doc.sh, &coord, dir_after, pt); 1241 1297 } 1242 1298 … … 1249 1305 coord.column = 1; 1250 1306 1251 sheet_get_cell_pt( &doc.sh, &coord, dir_before, spt);1307 sheet_get_cell_pt(doc.sh, &coord, dir_before, spt); 1252 1308 } 1253 1309 … … 1259 1315 1260 1316 spt_get_coord(cpt, &coord); 1261 sheet_get_row_width( &doc.sh, coord.row, &row_width);1317 sheet_get_row_width(doc.sh, coord.row, &row_width); 1262 1318 coord.column = row_width - 1; 1263 1319 1264 sheet_get_cell_pt( &doc.sh, &coord, dir_after, ept);1320 sheet_get_cell_pt(doc.sh, &coord, dir_after, ept); 1265 1321 } 1266 1322 … … 1288 1344 1289 1345 coord.column -= 1; 1290 sheet_get_cell_pt( &doc.sh, &coord, dir_before, &lp);1346 sheet_get_cell_pt(doc.sh, &coord, dir_before, &lp); 1291 1347 1292 1348 return pt_is_delimiter(&lp) … … 1310 1366 1311 1367 coord.column += 1; 1312 sheet_get_cell_pt( &doc.sh, &coord, dir_after, &rp);1368 sheet_get_cell_pt(doc.sh, &coord, dir_after, &rp); 1313 1369 1314 1370 ch = range_get_str(pt, &rp); … … 1336 1392 1337 1393 coord.column += 1; 1338 sheet_get_cell_pt( &doc.sh, &coord, dir_after, &rp);1394 sheet_get_cell_pt(doc.sh, &coord, dir_after, &rp); 1339 1395 1340 1396 ch = range_get_str(pt, &rp); -
uspace/app/edit/sheet.c
r83298e8 r4f351432 57 57 58 58 #include "sheet.h" 59 #include "sheet_impl.h" 59 60 60 61 enum { … … 66 67 67 68 /** Initialize an empty sheet. */ 68 int sheet_init(sheet_t *sh) 69 { 69 int sheet_create(sheet_t **rsh) 70 { 71 sheet_t *sh; 72 73 sh = calloc(1, sizeof(sheet_t)); 74 if (sh == NULL) 75 return ENOMEM; 76 70 77 sh->dbuf_size = INITIAL_SIZE; 71 78 sh->text_size = 0; … … 77 84 list_initialize(&sh->tags); 78 85 86 *rsh = sh; 79 87 return EOK; 80 88 } -
uspace/app/edit/sheet.h
r83298e8 r4f351432 50 50 51 51 /** Sheet */ 52 typedef struct { 53 /* Note: This structure is opaque for the user. */ 54 55 size_t text_size; 56 size_t dbuf_size; 57 char *data; 58 59 list_t tags; 60 } sheet_t; 52 struct sheet; 53 typedef struct sheet sheet_t; 61 54 62 55 /** Character cell coordinates … … 97 90 } tag_t; 98 91 99 extern int sheet_ init(sheet_t*);92 extern int sheet_create(sheet_t **); 100 93 extern int sheet_insert(sheet_t *, spt_t *, enum dir_spec, char *); 101 94 extern int sheet_delete(sheet_t *, spt_t *, spt_t *); -
uspace/app/ext2info/ext2info.c
r83298e8 r4f351432 40 40 #include <stdio.h> 41 41 #include <stdlib.h> 42 #include < libblock.h>42 #include <block.h> 43 43 #include <mem.h> 44 44 #include <loc.h> -
uspace/app/init/init.c
r83298e8 r4f351432 37 37 #include <stdio.h> 38 38 #include <unistd.h> 39 #include <stdarg.h> 39 40 #include <vfs/vfs.h> 40 41 #include <bool.h> … … 65 66 #define SRV_CONSOLE "/srv/console" 66 67 #define APP_GETTERM "/app/getterm" 68 69 #define SRV_COMPOSITOR "/srv/compositor" 70 71 #define HID_INPUT "hid/input" 72 #define HID_OUTPUT "hid/output" 73 #define HID_COMPOSITOR_SERVER ":0" 74 75 #define srv_start(path, ...) \ 76 srv_startl(path, path, ##__VA_ARGS__, NULL) 67 77 68 78 /** Print banner */ … … 143 153 } 144 154 145 static void spawn(const char *fname) 146 { 147 int rc; 155 static int srv_startl(const char *path, ...) 156 { 148 157 struct stat s; 149 150 if (stat(fname, &s) == ENOENT) 151 return; 152 153 printf("%s: Spawning %s\n", NAME, fname); 154 rc = task_spawnl(NULL, fname, fname, NULL); 155 if (rc != EOK) { 156 printf("%s: Error spawning %s (%s)\n", NAME, fname, 157 str_error(rc)); 158 } 159 } 160 161 static void srv_start(const char *fname) 162 { 158 if (stat(path, &s) == ENOENT) { 159 printf("%s: Unable to stat %s\n", NAME, path); 160 return ENOENT; 161 } 162 163 printf("%s: Starting %s\n", NAME, path); 164 165 va_list ap; 166 const char *arg; 167 int cnt = 0; 168 169 va_start(ap, path); 170 do { 171 arg = va_arg(ap, const char *); 172 cnt++; 173 } while (arg != NULL); 174 va_end(ap); 175 176 va_start(ap, path); 163 177 task_id_t id; 178 int rc = task_spawn(&id, path, cnt, ap); 179 va_end(ap); 180 181 if (rc != EOK) { 182 printf("%s: Error spawning %s (%s)\n", NAME, path, 183 str_error(rc)); 184 return rc; 185 } 186 187 if (!id) { 188 printf("%s: Error spawning %s (invalid task id)\n", NAME, 189 path); 190 return EINVAL; 191 } 192 164 193 task_exit_t texit; 165 int rc, retval; 166 struct stat s; 167 168 if (stat(fname, &s) == ENOENT) 169 return; 170 171 printf("%s: Starting %s\n", NAME, fname); 172 rc = task_spawnl(&id, fname, fname, NULL); 173 if (!id) { 174 printf("%s: Error spawning %s (%s)\n", NAME, fname, 175 str_error(rc)); 176 return; 177 } 178 194 int retval; 179 195 rc = task_wait(id, &texit, &retval); 180 196 if (rc != EOK) { 181 printf("%s: Error waiting for %s (%s)\n", NAME, fname,182 str_error(rc)); 183 return ;197 printf("%s: Error waiting for %s (%s)\n", NAME, path, 198 str_error(rc)); 199 return rc; 184 200 } 185 201 186 202 if (texit != TASK_EXIT_NORMAL) { 187 203 printf("%s: Server %s failed to start (unexpectedly " 188 "terminated)\n", NAME, fname);189 return ;190 } 191 192 if (retval != 0) {204 "terminated)\n", NAME, path); 205 return EINVAL; 206 } 207 208 if (retval != 0) 193 209 printf("%s: Server %s failed to start (exit code %d)\n", NAME, 194 fname, retval); 195 } 196 } 197 198 static void console(const char *isvc, const char *fbsvc) 199 { 200 printf("%s: Spawning %s %s %s\n", NAME, SRV_CONSOLE, isvc, fbsvc); 201 210 path, retval); 211 212 return retval; 213 } 214 215 static int console(const char *isvc, const char *osvc) 216 { 202 217 /* Wait for the input service to be ready */ 203 218 service_id_t service_id; … … 206 221 printf("%s: Error waiting on %s (%s)\n", NAME, isvc, 207 222 str_error(rc)); 208 return; 209 } 210 211 /* Wait for the framebuffer service to be ready */ 212 rc = loc_service_get_id(fbsvc, &service_id, IPC_FLAG_BLOCKING); 213 if (rc != EOK) { 214 printf("%s: Error waiting on %s (%s)\n", NAME, fbsvc, 215 str_error(rc)); 216 return; 217 } 218 219 rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, isvc, fbsvc, NULL); 220 if (rc != EOK) { 221 printf("%s: Error spawning %s %s %s (%s)\n", NAME, SRV_CONSOLE, 222 isvc, fbsvc, str_error(rc)); 223 } 223 return rc; 224 } 225 226 /* Wait for the output service to be ready */ 227 rc = loc_service_get_id(osvc, &service_id, IPC_FLAG_BLOCKING); 228 if (rc != EOK) { 229 printf("%s: Error waiting on %s (%s)\n", NAME, osvc, 230 str_error(rc)); 231 return rc; 232 } 233 234 return srv_start(SRV_CONSOLE, isvc, osvc); 235 } 236 237 static int compositor(const char *isvc, const char *name) 238 { 239 /* Wait for the input service to be ready */ 240 service_id_t service_id; 241 int rc = loc_service_get_id(isvc, &service_id, IPC_FLAG_BLOCKING); 242 if (rc != EOK) { 243 printf("%s: Error waiting on %s (%s)\n", NAME, isvc, 244 str_error(rc)); 245 return rc; 246 } 247 248 return srv_start(SRV_COMPOSITOR, isvc, name); 249 } 250 251 static int gui_start(const char *app, const char *srv_name) 252 { 253 char winreg[50]; 254 snprintf(winreg, sizeof(winreg), "%s%s%s", "comp", srv_name, "/winreg"); 255 256 printf("%s: Spawning %s %s\n", NAME, app, winreg); 257 258 task_id_t id; 259 int rc = task_spawnl(&id, app, app, winreg, NULL); 260 if (rc != EOK) { 261 printf("%s: Error spawning %s %s (%s)\n", NAME, app, 262 winreg, str_error(rc)); 263 return -1; 264 } 265 266 task_exit_t texit; 267 int retval; 268 rc = task_wait(id, &texit, &retval); 269 if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) { 270 printf("%s: Error retrieving retval from %s (%s)\n", NAME, 271 app, str_error(rc)); 272 return -1; 273 } 274 275 return retval; 224 276 } 225 277 … … 227 279 { 228 280 char term[LOC_NAME_MAXLEN]; 229 int rc;230 231 281 snprintf(term, LOC_NAME_MAXLEN, "%s/%s", LOCFS_MOUNT_POINT, svc); 232 282 … … 235 285 /* Wait for the terminal service to be ready */ 236 286 service_id_t service_id; 237 rc = loc_service_get_id(svc, &service_id, IPC_FLAG_BLOCKING);287 int rc = loc_service_get_id(svc, &service_id, IPC_FLAG_BLOCKING); 238 288 if (rc != EOK) { 239 289 printf("%s: Error waiting on %s (%s)\n", NAME, term, … … 279 329 if (!mount_root(STRING(RDFMT))) { 280 330 printf("%s: Exiting\n", NAME); 281 return -1;331 return 1; 282 332 } 283 333 284 334 /* Make sure tmpfs is running. */ 285 if (str_cmp(STRING(RDFMT), "tmpfs") != 0) { 286 spawn("/srv/tmpfs"); 287 } 288 289 spawn("/srv/locfs"); 290 spawn("/srv/taskmon"); 335 if (str_cmp(STRING(RDFMT), "tmpfs") != 0) 336 srv_start("/srv/tmpfs"); 337 338 srv_start("/srv/locfs"); 339 srv_start("/srv/taskmon"); 291 340 292 341 if (!mount_locfs()) { 293 342 printf("%s: Exiting\n", NAME); 294 return -2;343 return 2; 295 344 } 296 345 297 346 mount_tmpfs(); 298 347 299 s pawn("/srv/devman");300 s pawn("/srv/apic");301 s pawn("/srv/i8259");302 s pawn("/srv/obio");348 srv_start("/srv/devman"); 349 srv_start("/srv/apic"); 350 srv_start("/srv/i8259"); 351 srv_start("/srv/obio"); 303 352 srv_start("/srv/cuda_adb"); 304 353 srv_start("/srv/s3c24xx_uart"); 305 354 srv_start("/srv/s3c24xx_ts"); 306 355 307 spawn("/srv/loopip"); 308 spawn("/srv/ethip"); 309 spawn("/srv/inetsrv"); 310 spawn("/srv/tcp"); 311 spawn("/srv/udp"); 312 313 spawn("/srv/fb"); 314 spawn("/srv/input"); 315 console("hid/input", "hid/fb0"); 316 317 spawn("/srv/clipboard"); 318 spawn("/srv/remcons"); 356 srv_start("/srv/loopip"); 357 srv_start("/srv/ethip"); 358 srv_start("/srv/inetsrv"); 359 srv_start("/srv/tcp"); 360 srv_start("/srv/udp"); 361 362 srv_start("/srv/clipboard"); 363 srv_start("/srv/remcons"); 319 364 320 365 /* … … 325 370 srv_start("/srv/ata_bd"); 326 371 srv_start("/srv/gxe_bd"); 327 #else328 (void) srv_start;329 372 #endif 330 373 331 374 #ifdef CONFIG_MOUNT_DATA 332 375 /* Make sure fat is running. */ 333 if (str_cmp(STRING(RDFMT), "fat") != 0) {376 if (str_cmp(STRING(RDFMT), "fat") != 0) 334 377 srv_start("/srv/fat"); 335 }378 336 379 mount_data(); 337 380 #else … … 339 382 #endif 340 383 341 getterm("term/vc0", "/app/bdsh", true); 342 getterm("term/vc1", "/app/bdsh", false); 343 getterm("term/vc2", "/app/bdsh", false); 344 getterm("term/vc3", "/app/bdsh", false); 345 getterm("term/vc4", "/app/bdsh", false); 346 getterm("term/vc5", "/app/bdsh", false); 347 getterm("term/vc6", "/app/klog", false); 384 srv_start("/srv/input", HID_INPUT); 385 srv_start("/srv/output", HID_OUTPUT); 386 387 int rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER); 388 if (rc == EOK) { 389 gui_start("/app/vlaunch", HID_COMPOSITOR_SERVER); 390 gui_start("/app/vterm", HID_COMPOSITOR_SERVER); 391 } else { 392 rc = console(HID_INPUT, HID_OUTPUT); 393 if (rc == EOK) { 394 getterm("term/vc0", "/app/bdsh", true); 395 getterm("term/vc1", "/app/bdsh", false); 396 getterm("term/vc2", "/app/bdsh", false); 397 getterm("term/vc3", "/app/bdsh", false); 398 getterm("term/vc4", "/app/bdsh", false); 399 getterm("term/vc5", "/app/bdsh", false); 400 getterm("term/vc6", "/app/klog", false); 401 } 402 } 348 403 349 404 return 0; -
uspace/app/mkexfat/mkexfat.c
r83298e8 r4f351432 38 38 39 39 #include <stdio.h> 40 #include < libblock.h>40 #include <block.h> 41 41 #include <assert.h> 42 42 #include <errno.h> -
uspace/app/mkfat/mkfat.c
r83298e8 r4f351432 40 40 #include <stdio.h> 41 41 #include <stdlib.h> 42 #include < libblock.h>42 #include <block.h> 43 43 #include <mem.h> 44 44 #include <loc.h> -
uspace/app/mkmfs/mkmfs.c
r83298e8 r4f351432 39 39 #include <stdio.h> 40 40 #include <stdlib.h> 41 #include < libblock.h>41 #include <block.h> 42 42 #include <unistd.h> 43 43 #include <errno.h>
Note:
See TracChangeset
for help on using the changeset viewer.
