示例#1
0
文件: ecmkb.c 项目: TijmenW/FreeDOS
int ecMkB(const char * const name)
{   unsigned idFName;
    char buf[EC_LENGTH_B];
    int rv;

    if((rv = ecMkS()) != E_None)
        return rv;

    assert(name);

    if((idFName = ecPushString(name)) == 0)
        return E_NoMem;

    /* Make "buf" the largest possible buffer size */
    /* The '|' ensures to update the two last values later on */
    sprintf(buf, "%c%u|%lu %lu|", EC_TAG_BATCH, idFName, -1L, -1L);
    assert(strlen(buf) < sizeof(buf));

    /* reset position & line number to zero */
    memcpy(strchr(buf, '|'), "|0 0|", sizeof("|0 0|") - 1);

    if((rv = ctxtPush(CTXT_TAG_EXEC, buf)) == E_None
            && ++gflag_batchlevel == 1) {
        /* First batch level */
        gflag_echo = gflag_echoBatch;
    }

    return rv;
}
示例#2
0
文件: ecmks.c 项目: TijmenW/FreeDOS
static mk(ecTag_t tag)
{	char buf[2 + CTXT_LENGTH_ID];

	sprintf(buf, "%c%u"
	 , tag, CTXT_INFO(CTXT_TAG_STRING, nummax));
	return ctxtPush(CTXT_TAG_EXEC, buf);
}
示例#3
0
int cmd_pushd(char *param)
{	char *curdir;

	if((curdir = cwd(0)) != 0) {
		int rc;

		rc = ctxtPush(CTXT_TAG_DIRSTACK, curdir);
		free(curdir);

		if(rc == E_None) {
			/* Change to directory specified on command line */
			if(param && *param)
				return cmd_cdd(param);
			return 0;
		}
	}
	return 1;
}
示例#4
0
文件: pushd.c 项目: TijmenW/FreeDOS
int cmd_pushd(char *param)
{	char *curdir;
	int rc;

	if((curdir = cwd(0)) == 0) {
		error_out_of_memory();
		return 1;
	}

	rc = ctxtPush(CTXT_TAG_DIRSTACK, curdir);
	myfree(curdir);

	if(rc == E_None) {
		/* Change to directory specified on command line */
		if(param && *param)
			return cmd_cdd(param);
		return 0;
	}

	return 1;
}
示例#5
0
文件: ecmk_s.c 项目: TijmenW/FreeDOS
int ecMkI_S(const byte tag)
{	char buf[2 + CTXT_LENGTH_ID];

	sprintf(buf, "%c%u" , tag, CTXT_INFO(CTXT_TAG_STRING, nummax));
	return ctxtPush(CTXT_TAG_EXEC, buf);
}