Ignore:
File:
1 edited

Legend:

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

    r5a6cc679 ra35b458  
    4242#include <loc.h>
    4343#include <vfs/vfs.h>
     44#include <str.h>
    4445#include "version.h"
    4546#include "welcome.h"
     
    6263        if (fclose(*stream))
    6364                return;
    64        
     65
    6566        *stream = NULL;
    66        
     67
    6768        int oldfd;
    6869        errno_t rc = vfs_lookup_open(path, WALK_REGULAR, mode, &oldfd);
    6970        if (rc != EOK)
    7071                return;
    71        
     72
    7273        if (oldfd != fd) {
    7374                int newfd;
    7475                if (vfs_clone(oldfd, fd, false, &newfd) != EOK)
    7576                        return;
    76                
     77
    7778                assert(newfd == fd);
    7879
     
    8081                        return;
    8182        }
    82        
     83
    8384        *stream = fdopen(fd, fmode);
    8485}
     
    9293                return 1;
    9394        }
    94        
     95
    9596        char *term = *argv;
    9697        argv++;
    9798        argc--;
    98        
     99
    99100        char *locfs = *argv;
    100101        argv++;
    101102        argc--;
    102        
     103
    103104        bool print_msg = false;
    104105        bool wait = false;
    105        
     106
    106107        while ((argc > 0) && (str_cmp(*argv, "--") != 0)) {
    107108                if (str_cmp(*argv, "--msg") == 0) {
     
    113114                        return 2;
    114115                }
    115                
     116
    116117                argv++;
    117118                argc--;
    118119        }
    119        
     120
    120121        if (argc < 1) {
    121122                usage();
    122123                return 3;
    123124        }
    124        
     125
    125126        /* Skip "--" */
    126127        argv++;
    127128        argc--;
    128        
     129
    129130        char *cmd = *argv;
    130131        char **args = argv;
    131        
     132
    132133        if (wait) {
    133134                /* Wait for the terminal service to be ready */
     
    140141                }
    141142        }
    142        
     143
    143144        char term_node[LOC_NAME_MAXLEN];
    144145        snprintf(term_node, LOC_NAME_MAXLEN, "%s/%s", locfs, term);
    145        
     146
    146147        reopen(&stdin, 0, term_node, MODE_READ, "r");
    147148        reopen(&stdout, 1, term_node, MODE_WRITE, "w");
    148149        reopen(&stderr, 2, term_node, MODE_WRITE, "w");
    149        
     150
    150151        if (stdin == NULL)
    151152                return 4;
    152        
     153
    153154        if (stdout == NULL)
    154155                return 5;
    155        
     156
    156157        if (stderr == NULL)
    157158                return 6;
    158        
     159
    159160        /*
    160161         * FIXME: fdopen() should actually detect that we are opening a console
     
    162163         */
    163164        setvbuf(stdout, NULL, _IOLBF, BUFSIZ);
    164        
     165
    165166        version_print(term);
    166167        if (print_msg)
    167168                welcome_msg_print();
    168        
     169
    169170        task_id_t id;
    170171        task_wait_t twait;
    171        
     172
    172173        errno_t rc = task_spawnv(&id, &twait, cmd, (const char * const *) args);
    173174        if (rc != EOK) {
     
    176177                return rc;
    177178        }
    178        
     179
    179180        task_exit_t texit;
    180181        int retval;
     
    185186                return rc;
    186187        }
    187        
     188
    188189        return 0;
    189190}
Note: See TracChangeset for help on using the changeset viewer.