Example #1
0
int main(int argc, char** argv)
{
	int ret = MYSHELL_CMD_OK;
	cmd ma_cmd;
	int i;
	char* readlineptr;
	struct passwd* infos;
	char str[1024];
	char hostname[256];
	char workingdirectory[256];
	printf("pid = %d; ppid = %d\n", getpid(), getppid());
	while(ret != MYSHELL_FCT_EXIT)//TODO WHY
	{
		infos=getpwuid(getuid());
		gethostname(hostname, 256);
		getcwd(workingdirectory, 256);

		sprintf(str, "{myshell}%s@%s:%s$ ", infos->pw_name, hostname, workingdirectory);
		readlineptr = readline(str);

		while(*readlineptr != '\0' && *readlineptr == ' ')
		{
			readlineptr ++;
		}
		if(*readlineptr == '\0') continue;
		else if( strcmp(readlineptr, "exit")==0)
			break;
		add_history(readlineptr);
		parse_membres(readlineptr, &ma_cmd);
		parse_args(&ma_cmd);
		//aff_membres(&ma_cmd);
		//aff_args(&ma_cmd);

		for(i=0; i<ma_cmd.nb_membres; i++)
		{
			parse_redirect(i, &ma_cmd);
			//aff_redirect(&ma_cmd, i);
		}
		//chdir("..");
		exec_cmd(&ma_cmd);
		alarm(0);
		free_membres(&ma_cmd);
		free_args(&ma_cmd);
		free_redirect(&ma_cmd);

		free(readlineptr);
		//..........
		
	}
	//..........
	return 0;
}
Example #2
0
File: main.c Project: yatho/shell
int main(int argc, char** argv)
{
	//..........
	int ret = MYSHELL_CMD_OK;
	cmd mycmd;
	char* readlineptr, * tampon;
	struct passwd* infos;
	char str[1024];
	char hostname[256];
	char workingdirectory[256];
	rl_bind_key ('\t', rl_complete);/*initialisation de l'auto complétion*/

	using_history();

	//..........
	while(ret != MYSHELL_FCT_EXIT)
	{
		infos=getpwuid(getuid());
		gethostname(hostname, 256);
		getcwd(workingdirectory, 256);

		sprintf(str, "\n{myshell}%s@%s:%s$ ", infos->pw_name, hostname, workingdirectory);
		readlineptr = readline(str);

		if (strstr(readlineptr, "exit") != NULL) {
			ret = MYSHELL_FCT_EXIT;
		}
		else {

			tampon = (char *)malloc((strlen(readlineptr) + 1) * sizeof(char));
			if (tampon == NULL) {
				exit(-1);
			}

			strcpy(tampon, readlineptr);
			add_history(tampon);

			//..........
			parse_membres(readlineptr, &mycmd); 
			parse_args(&mycmd);
			parse_redirection(&mycmd);
			exec_commande(&mycmd);
			//.......... 

			//aff_membres(&mycmd);
			//aff_args(&mycmd);
			//aff_redirection(&mycmd);

		
			free(readlineptr);
			free_membres(&mycmd);
			free_args(&mycmd);
			free_redirection(&mycmd);
		
			//..........
		}
	}
	clear_history();
	//..........
	return 0;
}