Advertisement
Armaritto

Parse Command

Mar 7th, 2024 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.24 KB | None | 0 0
  1. char** parse_command(char input[]){
  2.     static char* strings[100];
  3.     int x = 0;
  4.     while(strings[x] != NULL){
  5.         strings[x] = NULL;
  6.         x++;
  7.     }
  8.     static char* quotations[3];
  9.     x=0;
  10.     while(quotations[x] != NULL){
  11.         quotations[x] = NULL;
  12.         x++;
  13.     }
  14.     int index = 0;
  15.     int iQuotation = 0;
  16.     char* tknQuotation = strtok(input, "\"");
  17.     while(tknQuotation != NULL){
  18.         quotations[iQuotation++] = tknQuotation;
  19.         tknQuotation = strtok(NULL, "\"");
  20.     }
  21.     if(quotations[1] == NULL){
  22.         char* token = strtok(input, " \n"); // split string by space and newline
  23.         while (token != NULL){
  24.             if (token[0] == '$'){
  25.                 char* varName = token + 1;
  26.                 for(int i = 0; i < varIndex; i++){
  27.                     if(!strcmp(varName, varNames[i])){
  28.                         strings[index++] = varValues[i];
  29.                     }
  30.                 }
  31.             }
  32.             else{
  33.                 strings[index++] = token ;
  34.             }
  35.             token = strtok(NULL, " \n");
  36.         }
  37.         strings[index] = NULL;
  38.     }
  39.     else{
  40.         for(int i = 0; i < 3; i++) {
  41.             if(i!=1){
  42.                 char* token = strtok(quotations[i], " \n");
  43.                 while (token != NULL){
  44.                     strings[index++] = token;
  45.                     token = strtok(NULL, " \n");
  46.                 }
  47.             }
  48.             else{
  49.                 char* q[100];
  50.                 int j = 0;
  51.                 char* tkn = strtok(quotations[i], " \n");
  52.                 while(tkn != NULL){
  53.                     if(tkn[0] == '$'){
  54.                         char* varName = tkn + 1;
  55.                         for(int k = 0; k < varIndex; k++){
  56.                             if(!strcmp(varName, varNames[k])){
  57.                                 char* token = strtok(varValues[k], "\"");
  58.                                 q[j++] = token;
  59.                             }
  60.                         }
  61.                     }
  62.                     else {
  63.                         q[j++] = tkn;
  64.                     }
  65.                     tkn = strtok(NULL, " \n");
  66.                 }
  67.                 strings[index++] = q;
  68.             }
  69.         }
  70.     }
  71.     return strings;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement