aboutsummaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authordos-reis <gdr@axiomatics.org>2010-08-18 02:10:23 +0000
committerdos-reis <gdr@axiomatics.org>2010-08-18 02:10:23 +0000
commitdf8254a5fa36257630ddb9d8a9de5ac2980d6ab4 (patch)
treef981499f5b7a7464bbec248edacc3404dc5c6449 /src/lib
parent839da713d2c9b1370190085080d1ecbfdcfcb223 (diff)
downloadopen-axiom-df8254a5fa36257630ddb9d8a9de5ac2980d6ab4.tar.gz
r13983@gauss (orig r1241): gdr | 2009-07-22 15:41:19 -0500
Create jap-sandbox. r14019@gauss (orig r1258): alfredoport | 2009-08-18 19:48:31 -0500 Sync with trunk r14021@gauss (orig r1260): alfredoport | 2009-08-19 19:09:52 -0500 Update branch pre-merge r14960@gauss (orig r1681): alfredoport | 2010-07-12 20:43:04 -0500 Add some string manipulation functions and documentation r14982@gauss (orig r1697): alfredoport | 2010-07-23 20:12:44 -0500 Sync with trunk r14994@gauss (orig r1709): gdr | 2010-07-25 21:25:44 -0500 * src/lib/cfuns-c.c (oa_strcat): Document and tidy. r15021@gauss (orig r1733): alfredoport | 2010-08-01 19:25:18 -0500 Sync with trunk r15022@gauss (orig r1734): alfredoport | 2010-08-03 23:35:18 -0500 Solve compiling issues r15054@gauss (orig r1759): alfredoport | 2010-08-16 19:39:10 -0500 Sync with trunk r15056@gauss (orig r1761): gdr | 2010-08-17 19:11:08 -0500 Regenerate configure without presea r15057@gauss (orig r1762): gdr | 2010-08-17 19:13:17 -0500 Link htserach with a C++ linker. r15058@gauss (orig r1763): gdr | 2010-08-17 20:24:17 -0500 Massage htsearch. r15059@gauss (orig r1764): gdr | 2010-08-17 20:51:59 -0500 * hyper/htsearch.cc: Rename from htsearch.c to avoid confusions. r15060@gauss (orig r1765): gdr | 2010-08-17 21:04:12 -0500 * config/open-axiom.m4 (OPENAXIOM_HOST_PROGS): Don't check for awk anymore.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/cfuns-c.c65
1 files changed, 64 insertions, 1 deletions
diff --git a/src/lib/cfuns-c.c b/src/lib/cfuns-c.c
index e8f2562b..62d401dd 100644
--- a/src/lib/cfuns-c.c
+++ b/src/lib/cfuns-c.c
@@ -2,7 +2,7 @@
Copyright (C) 1991-2002, The Numerical Algorithms Group Ltd.
All rights reserved.
- Copyright (C) 2007-2009, Gabriel Dos Reis.
+ Copyright (C) 2007-2010, Gabriel Dos Reis.
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -544,6 +544,22 @@ oa_concatenate_string(const char* lhs, const char* rhs)
}
}
+/* Return a string object that is the result of catenating the strings
+ designated by `left' and `right'. */
+OPENAXIOM_EXPORT const char*
+oa_strcat(const char* left, const char* right)
+{
+ int left_size = strlen(left);
+ int right_size = strlen(right);
+ int size = left_size + right_size;
+ char* buffer = malloc(size + 1);
+
+ memcpy(buffer, left, left_size);
+ memcpy(buffer + left_size, right, right_size);
+ buffer[size] = '\0';
+ return buffer;
+}
+
/* Return the value of an environment variable. */
OPENAXIOM_EXPORT char*
oa_getenv(const char* var)
@@ -811,3 +827,50 @@ oa_spawn(openaxiom_process* proc, openaxiom_spawn_flags flags)
return proc->id;
#endif
}
+
+OPENAXIOM_EXPORT char*
+oa_substr(const char* str, const size_t begin, const size_t end)
+{
+ char* substring;
+ int len;
+
+ if (str == NULL || strlen(str) == 0 ||
+ strlen(str) < begin || end >= strlen(str) ||
+ begin > end || begin < 0 || end < 0)
+ return NULL;
+
+ len = (end - begin) + 2;
+ substring = malloc(len * sizeof(char));
+ memset(substring,'\0',len);
+ memcpy(substring, str+begin, len-1);
+
+ return substring;
+}
+
+OPENAXIOM_EXPORT char**
+oa_split(const char* sequence, const char* delimiter, int* size)
+{
+ int sequence_length = 0, newsize = 0;
+ char* token;
+ char** tokens = NULL;
+ char* sequence_copy;
+
+ sequence_length = strlen(sequence);
+ sequence_copy = (char*) malloc((sequence_length + 1) * sizeof(char*));
+ strcpy(sequence_copy,sequence);
+ sequence_copy[sequence_length] = '\0';
+
+ token = strtok(sequence_copy, delimiter);
+ while (token != NULL) {
+
+ tokens = (char**) realloc(tokens,(newsize + 1) * sizeof(char*));
+ tokens[newsize] = token;
+ newsize++;
+ token = strtok (NULL, delimiter);
+ }
+
+ *size = newsize;
+
+ return tokens;
+}
+