Subversion Repositories HelenOS-historic

Rev

Rev 625 | Rev 640 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 625 Rev 635
Line 115... Line 115...
115
            spinlock_lock(&cmd->lock);
115
            spinlock_lock(&cmd->lock);
116
        } else {
116
        } else {
117
            spinlock_lock(&cmd->lock);
117
            spinlock_lock(&cmd->lock);
118
            spinlock_lock(&hlp->lock);
118
            spinlock_lock(&hlp->lock);
119
        }
119
        }
120
       
120
        if ((strncmp(hlp->name,
121
        if ((strncmp(hlp->name, cmd->name, strlen(cmd->name)) == 0)) {
121
                 cmd->name, max(strlen(cmd->name),
-
 
122
                        strlen(hlp->name))) == 0)) {
122
            /* The command is already there. */
123
            /* The command is already there. */
123
            spinlock_unlock(&hlp->lock);
124
            spinlock_unlock(&hlp->lock);
124
            spinlock_unlock(&cmd->lock);
125
            spinlock_unlock(&cmd->lock);
125
            spinlock_unlock(&cmd_lock);
126
            spinlock_unlock(&cmd_lock);
126
            return 0;
127
            return 0;
Line 137... Line 138...
137
   
138
   
138
    spinlock_unlock(&cmd_lock);
139
    spinlock_unlock(&cmd_lock);
139
    return 1;
140
    return 1;
140
}
141
}
141
 
142
 
-
 
143
/** Print count times a character */
142
static void rdln_print_c(char ch, int count)
144
static void rdln_print_c(char ch, int count)
143
{
145
{
144
    int i;
146
    int i;
145
    for (i=0;i<count;i++)
147
    for (i=0;i<count;i++)
146
        putchar(ch);
148
        putchar(ch);
147
}
149
}
148
 
150
 
-
 
151
/** Insert character to string */
149
static void insert_char(char *str, char ch, int pos)
152
static void insert_char(char *str, char ch, int pos)
150
{
153
{
151
    int i;
154
    int i;
152
   
155
   
153
    for (i=strlen(str);i > pos; i--)
156
    for (i=strlen(str);i > pos; i--)
154
        str[i] = str[i-1];
157
        str[i] = str[i-1];
155
    str[pos] = ch;
158
    str[pos] = ch;
156
}
159
}
157
 
160
 
-
 
161
/** Try to find a command begenning with prefix */
158
static const char * cmdtab_search_one(const char *name,link_t **startpos)
162
static const char * cmdtab_search_one(const char *name,link_t **startpos)
159
{
163
{
160
    int namelen = strlen(name);
164
    int namelen = strlen(name);
161
    const char *curname;
165
    const char *curname;
162
 
166
 
Line 479... Line 483...
479
        cmd_info_t *hlp;
483
        cmd_info_t *hlp;
480
       
484
       
481
        hlp = list_get_instance(cur, cmd_info_t, link);
485
        hlp = list_get_instance(cur, cmd_info_t, link);
482
        spinlock_lock(&hlp->lock);
486
        spinlock_lock(&hlp->lock);
483
       
487
       
484
        if (strncmp(hlp->name, &cmdline[start], strlen(hlp->name)) == 0) {
488
        if (strncmp(hlp->name, &cmdline[start], max(strlen(hlp->name),
-
 
489
                                end-start+1)) == 0) {
485
            cmd = hlp;
490
            cmd = hlp;
486
            break;
491
            break;
487
        }
492
        }
488
       
493
       
489
        spinlock_unlock(&hlp->lock);
494
        spinlock_unlock(&hlp->lock);