Exemplo n.º 1
0
int cmd_popd(char *rest)
   {
#ifdef INCLUDE_CMD_PUSHD
   char *Tmp_Stack = Dir_Stack;
   char newdir[MAXPATH];
   int i = 0;

   /* '*' == Wipe stack contents */
   if(rest && *rest == '*')
      {
      Dir_Stack_Entries = 0;
      Dir_Stack_Pointer = 0;
      }
   /* If there is anything in the stack */
   else if(Dir_Stack_Entries)
      {
      /* Find the last entry */
      while(++i < Dir_Stack_Entries)
         while(*Tmp_Stack++) ;

      /* Copy the pathname to a buffer */
      strcpy(newdir, Tmp_Stack);
      /* Update pointer and such */
      Dir_Stack_Pointer -= strlen(Tmp_Stack) + 1;
      Dir_Stack_Entries -= 1;

	  return cmd_cdd(newdir);
      }
   /* If the stack is empty */
   else
#endif
   	displayString(TEXT_DIRSTACK_EMPTY);

   return 0;
   }
Exemplo n.º 2
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
int cmd_pushd(char *rest)
   {
   char *Tmp_Stack = Dir_Stack;
   char *curdir;
   int i = 1;

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

   while(Dir_Stack_Pointer + strlen(curdir) > DIR_STACK_LEN)
      {
      while(*Tmp_Stack++)
         i++;

      /* Copy all but the first entry to the buffer, and then put it back */
      memcpy(Buffer, Tmp_Stack, i + Dir_Stack_Pointer - 1);
      Dir_Stack_Pointer -= i;
      memcpy(Dir_Stack, Buffer, Dir_Stack_Pointer);
      Dir_Stack_Entries--;
      }

   /* Append the stack and update the stack pointer */
   strcpy(Dir_Stack + Dir_Stack_Pointer, curdir);
   Dir_Stack_Pointer += strlen(curdir) + 1;
   Dir_Stack[Dir_Stack_Pointer - 1] = '\0';
   Dir_Stack_Entries++;

   free(curdir);

   /* Change to directory specified on command line */
   if(rest && *rest)
   	return cmd_cdd(rest);

   return 0;
   }