Guest User

Untitled

a guest
Apr 18th, 2012
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include <unistd.h>
  5. #include "y.tab.h"
  6.  
  7. int main()
  8. {
  9. printf("/////////////////////////////\n");
  10. printf("///\tThe Nutshell\n");
  11. printf("///\t-Joseph Szigeti\n///\t-Dimitar Dinev\n");
  12. printf("///\tDefault PATH=/bin/\n");
  13. printf("///\tOur Pipe command only works with single words\n");
  14. printf("///\t e.g. cmd1 | cmd2\n");
  15. printf("///\tPipe seems to crash the shell after running\n");
  16. putenv("PATH=/bin/");
  17. putenv("PRMPT=shell");
  18. int i = 0;
  19. while(1)
  20. {
  21. char * prompt;
  22. prompt = getenv("PRMPT");
  23. printf("%s %d: ",prompt,i++);
  24. yyparse();
  25. }
  26. }
  27.  
  28. void pip(char * arg1, char * arg2)
  29. {
  30. printf("\targ1: %s\n",arg1);
  31. printf("\targ2: %s\n",arg2);
  32. printf("\t%s | %s\n",arg1,arg2);
  33.  
  34. int pipefd[2];
  35.  
  36. char *cmd1[] = {arg1, NULL};
  37. char *cmd2[] = {arg2, NULL};
  38.  
  39. pipe(pipefd);
  40.  
  41. if (fork() == 0)
  42. {
  43. dup2(pipefd[0], 0);
  44. close(pipefd[1]);
  45. execvp(cmd2[0], cmd2);
  46. }
  47. else
  48. {
  49. dup2(pipefd[1], 1);
  50. close(pipefd[0]);
  51. execvp(cmd1[0], cmd1);
  52. }
  53. }
  54.  
  55. void bye()
  56. {
  57. printf("\tbye'd\n");
  58. exit(1);
  59. }
  60.  
  61. void set()
  62. {
  63. printf("\tPath: %s\n",getenv("PATH"));
  64. printf("\tPrompt: %s\n",getenv("PRMPT"));
  65. }
  66.  
  67. void setp(char *prm)
  68. {
  69. char *var = "PRMPT=";
  70. char *val = prm;
  71. char *str3;
  72. str3 = (char *)calloc(strlen(var)+strlen(val)+1,sizeof(char));
  73. strcat(str3,var);
  74. strcat(str3,val);
  75. printf("\t%s\n",str3);
  76. putenv(str3);
  77. }
  78.  
  79. void setpa(char *pat)
  80. {
  81. char *var = "PATH=";
  82. char *val = pat;
  83. char *str3;
  84. str3 = (char *)calloc(strlen(var)+strlen(val)+1,sizeof(char));
  85. strcat(str3,var);
  86. strcat(str3,val);
  87. printf("\t%s\n",str3);
  88. putenv(str3);
  89. }
  90.  
  91. void cd()
  92. {
  93. chdir("/home");
  94. }
  95.  
  96. void cdd(char *dir)
  97. {
  98. int error = chdir(dir);
  99. if (error != 0) {printf("Error, directory unchanged");}
  100. }
  101.  
  102. void run(char *com)
  103. {
  104. char *var = "PATH=";
  105. char *val = com;
  106. char *str3;
  107. str3 = (char *)calloc(strlen(var)+strlen(val)+1,sizeof(char));
  108. strcat(str3,var);
  109. strcat(str3,val);
  110. printf("\t%s\n",str3);
  111. system(str3);
  112. }
  113.  
  114. void aliasList()
  115. {
  116. char name[10];
  117. char command[100];
  118. FILE *fp;
  119. if (fp = fopen("alias","r"))
  120. {
  121. while (fscanf(fp,"%s %s",name,command) != EOF)
  122. printf("%s = %s\n",name,command);
  123.  
  124. fclose(fp);
  125. }
  126. else
  127. printf("Error: alias file does not exist");
  128. }
  129.  
  130. void alias(char *name, char *command)
  131. {
  132. FILE *ofp;
  133. ofp = fopen("alias","a");
  134. fprintf(ofp,"%s %s",name,command);
  135. fclose(ofp);
  136. }
  137.  
  138. void unalias(char *search)
  139. {
  140. char name[10];
  141. char command[100];
  142. FILE *ifp, *ofp;
  143. ofp = fopen("temp","w");
  144. if (ifp = fopen("alias","r"))
  145. {
  146. while (fscanf(ifp,"%s %s",name,command) != EOF)
  147. if (strcmp(name,search)!=0)
  148. fprintf(ofp,"%s %s\n",name,command);
  149.  
  150. fclose(ifp);
  151. fclose(ofp);
  152. unlink("alias");
  153. rename("temp","alias");
  154. }
  155. else
  156. printf("Error: alias file does not exist");
  157. }
  158.  
  159. int aliasCheck(char *search)
  160. {
  161. int bool;
  162. char name[10];
  163. char command[100];
  164. FILE *ifp;
  165.  
  166. if(ifp = fopen("alias","r"))
  167. {
  168. while (fscanf(ifp,"%s %s",name,command) != EOF)
  169. if (strcmp(name,search)!=0)
  170. bool=0;
  171. else
  172. return 1;
  173.  
  174. fclose(ifp);
  175. return bool;
  176. }
  177. return 0;
  178. }
  179.  
  180. void aliasExec(char *search)
  181. {
  182. char name[10];
  183. char command[100];
  184. FILE *ifp;
  185.  
  186. if(ifp = fopen("alias","r"))
  187. {
  188. while (fscanf(ifp,"%s %s",name,command) != EOF)
  189. if (strcmp(name,search)==0)
  190. system(command);
  191.  
  192. fclose(ifp);
  193. }
  194. }
  195.  
  196. void aliasHelper(char * str)
  197. {
  198. *str++;
  199. str[strlen(str)-1] = NULL;
  200. printf("\t%s\n",str);
  201. system(str);
  202. }
Advertisement
Add Comment
Please, Sign In to add comment