Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/getterm/getterm.c

    r4deb8b5 r0485135  
    4343#include <errno.h>
    4444#include "version.h"
    45 #include "welcome.h"
    4645
    4746#define APP_NAME  "getterm"
     
    4948static void usage(void)
    5049{
    51         printf("Usage: %s <terminal> [-w] <command> [<arguments...>]\n", APP_NAME);
     50        printf("Usage: %s <terminal> <path>\n", APP_NAME);
    5251}
    5352
     
    7473}
    7574
     75static task_id_t spawn(const char *fname)
     76{
     77        task_id_t id;
     78        int rc;
     79       
     80        rc = task_spawnl(&id, fname, fname, NULL);
     81        if (rc != EOK) {
     82                printf("%s: Error spawning %s (%s)\n", APP_NAME, fname,
     83                    str_error(rc));
     84                return 0;
     85        }
     86       
     87        return id;
     88}
     89
    7690int main(int argc, char *argv[])
    7791{
    78         int rc;
    79         task_exit_t texit;
    80         int retval;
    81         task_id_t id;
    82         char *fname, *term;
    83         char **cmd_args;
    84         bool print_wmsg;
    85 
    86         ++argv; --argc;
    87         if (argc < 1) {
     92        if (argc < 3) {
    8893                usage();
    8994                return -1;
    9095        }
    91 
    92         if (str_cmp(*argv, "-w") == 0) {
    93                 print_wmsg = true;
    94                 ++argv; --argc;
    95         } else {
    96                 print_wmsg = false;
    97         }
    98 
    99         if (argc < 2) {
    100                 usage();
    101                 return -1;
    102         }
    103 
    104         term = *argv++;
    105         fname = *argv;
    106         cmd_args = argv;
    10796       
    108         reopen(&stdin, 0, term, O_RDONLY, "r");
    109         reopen(&stdout, 1, term, O_WRONLY, "w");
    110         reopen(&stderr, 2, term, O_WRONLY, "w");
     97        reopen(&stdin, 0, argv[1], O_RDONLY, "r");
     98        reopen(&stdout, 1, argv[1], O_WRONLY, "w");
     99        reopen(&stderr, 2, argv[1], O_WRONLY, "w");
    111100       
    112101        /*
     
    125114                return -4;
    126115       
    127         version_print(term);
    128         if (print_wmsg)
    129                 welcome_msg_print();
    130 
    131         rc = task_spawnv(&id, fname, (const char * const *) cmd_args);
    132         if (rc != EOK) {
    133                 printf("%s: Error spawning %s (%s)\n", APP_NAME, fname,
    134                     str_error(rc));
    135                 return -5;
     116        version_print(argv[1]);
     117        task_id_t id = spawn(argv[2]);
     118       
     119        if (id != 0) {
     120                task_exit_t texit;
     121                int retval;
     122                task_wait(id, &texit, &retval);
     123               
     124                return 0;
    136125        }
    137 
    138         rc = task_wait(id, &texit, &retval);
    139         if (rc != EOK) {
    140                 printf("%s: Error waiting for %s (%s)\n", APP_NAME, fname,
    141                     str_error(rc));
    142                 return -6;
    143         }
    144 
    145         return 0;
     126       
     127        return -5;
    146128}
    147129
Note: See TracChangeset for help on using the changeset viewer.