Subversion Repositories SvarDOS

Compare Revisions

Ignore whitespace Rev 371 → Rev 372

/svarcom/cmd/cd.c
10,7 → 10,7
* Type CD without parameters to display the current drive and directory.
*/
 
static int cmd_cd(const struct cmd_funcparam *p) {
static int cmd_cd(struct cmd_funcparam *p) {
/* two arguments max */
if (p->argc > 1) {
outputnl("Too many parameters");
/svarcom/cmd/dir.c
29,7 → 29,7
#define cmd_dir_attr_arc 32
 
 
static int cmd_dir(const struct cmd_funcparam *p) {
static int cmd_dir(struct cmd_funcparam *p) {
const char *filespecptr = "*.*";
unsigned short errcode;
_Packed struct DTA {
/svarcom/cmd/exit.c
5,7 → 5,7
*
*/
 
static int cmd_exit(const struct cmd_funcparam *p) {
static int cmd_exit(struct cmd_funcparam *p) {
if ((p->argc == 1) && (imatch(p->argv[0], "/?"))) {
output("EXIT\r\n"
"\r\n"
/svarcom/cmd/path.c
0,0 → 1,68
/*
* path
*
* Displays or sets a search path for executable files.
*/
 
static int cmd_path(struct cmd_funcparam *p) {
char *buff = p->BUFFER;
 
/* no parameter - display current path */
if (p->argc == 0) {
char far *curpath = env_lookup(p->env_seg, "PATH");
if (curpath != NULL) {
unsigned short i;
for (i = 0;; i++) {
buff[i] = curpath[i];
if (buff[i] == 0) break;
}
outputnl(buff);
}
return(-1);
}
 
/* more than 1 parameter */
if (p->argc > 1) {
outputnl("Too many parameters");
return(-1);
}
 
/* IF HERE: THERE IS EXACTLY 1 ARGUMENT (argc == 1) */
 
/* help screen (/?) */
if (imatch(p->argv[0], "/?")) {
output("Displays or sets a search path for executable files.\r\n"
"\r\n"
"PATH [[drive:]path[;...]]\r\n"
"PATH ;\r\n"
"\r\n"
"Type PATH ; to clear all search-path settings and direct DOS to search\r\n"
"only in the current directory.\r\n"
"\r\n"
"Type PATH without parameters to display the current path.\r\n");
return(-1);
}
 
/* reset the PATH string (PATH ;) */
if (imatch(p->argv[0], ";")) {
env_dropvar(p->env_seg, "PATH");
return(-1);
}
 
/* otherwise set PATH to whatever is passed on command-line */
{
unsigned short i;
strcpy(buff, "PATH=");
for (i = 0;; i++) {
buff[i + 5] = p->argv[0][i];
if (buff[i + 5] == '\r') break;
}
buff[i + 5] = 0;
outputnl("---");
outputnl(buff);
outputnl("---");
env_setvar(p->env_seg, buff);
}
 
return(-1);
}
/svarcom/cmd/prompt.c
5,7 → 5,7
*
*/
 
static int cmd_prompt(const struct cmd_funcparam *p) {
static int cmd_prompt(struct cmd_funcparam *p) {
if ((p->argc == 1) && (imatch(p->argv[0], "/?"))) {
output("Changes the DOS command prompt.\r\n"
"\r\n"
22,8 → 22,9
 
/* otherwise set PROMPT to whatever is passed on command-line */
{
char buff[256] = "PROMPT=";
unsigned short i;
char *buff = p->BUFFER;
strcpy(buff, "PROMPT=");
for (i = 0;; i++) {
buff[i + 7] = p->cmdline[p->argoffset + i];
if (buff[i + 7] == '\r') break;
/svarcom/cmd/set.c
6,13 → 6,13
*/
 
 
static int cmd_set(const struct cmd_funcparam *p) {
static int cmd_set(struct cmd_funcparam *p) {
char far *env = MK_FP(p->env_seg, 0);
char buff[256];
int i;
char *buff = p->BUFFER;
/* no arguments - display content */
if (p->argc == 0) {
while (*env != 0) {
unsigned short i;
/* copy string to local buff for display */
for (i = 0;; i++) {
buff[i] = *env;
19,13 → 19,12
env++;
if (buff[i] == 0) break;
}
puts(buff);
outputnl(buff);
}
} else if ((p->argc == 1) && (imatch(p->argv[0], "/?"))) {
outputnl("TODO: help screen"); /* TODO */
} else { /* set variable (do not rely on argv, SET has its own rules...) */
const char far *ptr;
char buff[256];
unsigned short i;
/* locate the first space */
for (ptr = p->cmdline; *ptr != ' '; ptr++);