Browse Source

Misc functions to work with tokens and delimiters

Ivan Arkhipov 5 years ago
parent
commit
a8e6e871d3
2 changed files with 40 additions and 3 deletions
  1. 38 3
      esh_misc.c
  2. 2 0
      esh_misc.h

+ 38 - 3
esh_misc.c

@@ -45,12 +45,47 @@ void EShShowHelpAndExit() {
    	exit(0);
 }
 
-int EShIsShellLetter(char c) {
+int EShIsShellLetter(char c) { // TODO: Russian symbols
 	return (c >= 'a' && c <= 'z') || 
 		   (c >= 'A' && c <= 'Z') || 
-		   (c >= 'а' && c <= 'я') || 
-		   (c >= 'А' && c <= 'Я') || 
 		   (c >= '0' && c <= '9') || 
 		   (c >= ' ' && c <= '/') ||
 		   (c >= ':' && c <= '?');
 } 
+
+ESH_JOB_DELIMITER EshIsJobDelimiter(char* c) {
+    if (strstr(c, "&&") == c) {
+    	return LOGIC_AND;
+    }
+
+    if (strstr(c, "||") == c) {
+    	return LOGIC_OR;
+    }
+
+    if (strstr(c, "&") == c) {
+    	return LOGIC_AND;
+    }
+
+    if (strstr(c, "|") == c) {
+    	return BIT_OR;
+    }
+
+    if (strstr(c, ";") == c) {
+    	return SEMICOLON;
+    }
+
+    return NOT_A_DELIMITER;
+}
+
+int EShGetJobDelimiterSize(ESH_JOB_DELIMITER delim) {
+	if (delim == LOGIC_AND || delim == LOGIC_OR) {
+		return 2;
+	}
+
+	if (delim == BIT_OR || delim == LOGIC_AND || delim == SEMICOLON) {
+		return 1;
+	}
+	
+	return 0;
+}
+

+ 2 - 0
esh_misc.h

@@ -19,4 +19,6 @@ void EShShowHelpAndExit(); // Prints help to stdout and exits
 
 int EShIsShellLetter(char c); // Returns 1 if c is 'good' char (not a command char, but a written letter) 
 
+ESH_JOB_DELIMITER EshIsJobDelimiter(char* c);
+
 #endif // ESH_MISC_H