Subversion Repositories SvarDOS

Rev

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

Rev 571 Rev 989
Line 42... Line 42...
42
    return(CMD_FAIL);
42
    return(CMD_FAIL);
43
  }
43
  }
44
 
44
 
45
  /* does EXENAME in DIRECTORY exist? */
45
  /* does EXENAME in DIRECTORY exist? */
46
  if (lookup_cmd(buff, linkname, realdirname, &ext) != 0) {
46
  if (lookup_cmd(buff, linkname, realdirname, &ext) != 0) {
47
    outputnl("No matching executable found in given path.");
47
    nls_outputnl(29,4); /* "No matching executable found in given path." */
48
    return(CMD_FAIL);
48
    return(CMD_FAIL);
49
  }
49
  }
50
 
50
 
51
  /* open DOSDIR\CFG\LINKS.DB and write realdirname to */
51
  /* open DOSDIR\CFG\LINKS.DB and write realdirname to */
52
  if (link_computefname(buff, linkname, env_seg) != 0) return(CMD_FAIL);
52
  if (link_computefname(buff, linkname, env_seg) != 0) return(CMD_FAIL);
Line 101... Line 101...
101
  unsigned short i;
101
  unsigned short i;
102
 
102
 
103
  /* is the argument valid? (must not contain any dot nor backslash) */
103
  /* is the argument valid? (must not contain any dot nor backslash) */
104
  for (i = 0; linkname[i] != 0; i++) {
104
  for (i = 0; linkname[i] != 0; i++) {
105
    if ((linkname[i] == '.') || (linkname[i] == '/') || (linkname[i] == '\\')) {
105
    if ((linkname[i] == '.') || (linkname[i] == '/') || (linkname[i] == '\\')) {
106
      outputnl("Bad link name");
106
      nls_outputnl(0,3); /* "Invalid parameter format" */
107
      return(CMD_OK);
107
      return(CMD_OK);
108
    }
108
    }
109
  }
109
  }
110
 
110
 
111
  /* prep link filename to look at */
111
  /* prep link filename to look at */
Line 149... Line 149...
149
    for (i = 0; linkname[i] != 0; i++) {
149
    for (i = 0; linkname[i] != 0; i++) {
150
      switch (linkname[i]) {
150
      switch (linkname[i]) {
151
        case '.':
151
        case '.':
152
        case '/':
152
        case '/':
153
        case '\\':
153
        case '\\':
154
          outputnl("Invalid link pattern");
154
          nls_outputnl(0,3); /* "Invalid parameter format" */
155
          return(CMD_FAIL);
155
          return(CMD_FAIL);
156
      }
156
      }
157
    }
157
    }
158
  } else {
158
  } else {
159
    linkname = "*";
159
    linkname = "*";
160
  }
160
  }
161
 
161
 
162
  /* fetch %DOSDIR% */
162
  /* fetch %DOSDIR% */
163
  pathlen = env_lookup_valcopy(buff, 128, env_seg, "DOSDIR");
163
  pathlen = env_lookup_valcopy(buff, 128, env_seg, "DOSDIR");
164
  if (pathlen == 0) {
164
  if (pathlen == 0) {
165
    outputnl("%DOSDIR% not defined");
165
    nls_outputnl(29,5); /* "%DOSDIR% not defined" */
166
    return(CMD_FAIL);
166
    return(CMD_FAIL);
167
  }
167
  }
168
 
168
 
169
  /* prep DOSDIR\LINKS\pattern */
169
  /* prep DOSDIR\LINKS\pattern */
170
  if (buff[pathlen - 1] == '\\') pathlen--;
170
  if (buff[pathlen - 1] == '\\') pathlen--;
Line 229... Line 229...
229
}
229
}
230
 
230
 
231
 
231
 
232
static enum cmd_result cmd_ln(struct cmd_funcparam *p) {
232
static enum cmd_result cmd_ln(struct cmd_funcparam *p) {
233
  if (cmd_ishlp(p)) {
233
  if (cmd_ishlp(p)) {
234
    outputnl("Adds, deletes or displays executable links.");
234
    nls_outputnl(29,0); /* "Adds, deletes or displays executable links." */
235
    outputnl("");
235
    outputnl("");
236
    outputnl("LN ADD linkname targetdir");
236
    nls_outputnl(29,1); /* "LN ADD linkname targetdir" */
237
    outputnl("LN DEL linkname");
237
    nls_outputnl(29,2); /* "LN DEL linkname" */
238
    outputnl("LN LIST [pattern]");
238
    nls_outputnl(29,3); /* "LN LIST [pattern]" */
239
    return(CMD_OK);
239
    return(CMD_OK);
240
  }
240
  }
241
 
241
 
242
  if (p->argc == 0) {
242
  if (p->argc == 0) {
243
    outputnl("Not enough parameters");
243
    nls_outputnl(0,7); /* "Required parameter missing */
244
    return(CMD_OK);
244
    return(CMD_OK);
245
  }
245
  }
246
 
246
 
247
  /* detect what subfunction the user wants */
247
  /* detect what subfunction the user wants */
248
  if ((imatch(p->argv[0], "add")) && (p->argc == 3)) return(cmd_lnadd(p->BUFFER, p->argv[1], p->argv[2], p->env_seg));
248
  if ((imatch(p->argv[0], "add")) && (p->argc == 3)) return(cmd_lnadd(p->BUFFER, p->argv[1], p->argv[2], p->env_seg));
Line 250... Line 250...
250
  if (imatch(p->argv[0], "list")) {
250
  if (imatch(p->argv[0], "list")) {
251
    if (p->argc == 1) return(cmd_lnlist(p->BUFFER, NULL, p->env_seg));
251
    if (p->argc == 1) return(cmd_lnlist(p->BUFFER, NULL, p->env_seg));
252
    if (p->argc == 2) return(cmd_lnlist(p->BUFFER, p->argv[1], p->env_seg));
252
    if (p->argc == 2) return(cmd_lnlist(p->BUFFER, p->argv[1], p->env_seg));
253
  }
253
  }
254
 
254
 
255
  outputnl("Invalid argument");
255
  nls_outputnl(0,6); /* "Invalid parameter" */
256
  return(CMD_FAIL);
256
  return(CMD_FAIL);
257
}
257
}