diff options
author | dos-reis <gdr@axiomatics.org> | 2010-08-18 02:10:23 +0000 |
---|---|---|
committer | dos-reis <gdr@axiomatics.org> | 2010-08-18 02:10:23 +0000 |
commit | df8254a5fa36257630ddb9d8a9de5ac2980d6ab4 (patch) | |
tree | f981499f5b7a7464bbec248edacc3404dc5c6449 /src/lib | |
parent | 839da713d2c9b1370190085080d1ecbfdcfcb223 (diff) | |
download | open-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.c | 65 |
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; +} + |