summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2014-10-24 14:54:48 -0600
committermo khan <mo@mokhan.ca>2014-10-24 14:54:48 -0600
commit93c5c1eda1856a3aaed4a506215e5110a69049a1 (patch)
tree60fc51a8b9ed47e1b4d1313c4858f19ceaafece0
parentfca63165ad881a2774b503154a2bdc424ff8106b (diff)
update c greet function to return string instead of write to stdout.main
-rw-r--r--greeting.c14
-rw-r--r--greeting.h1
-rw-r--r--greeting.rb4
3 files changed, 13 insertions, 6 deletions
diff --git a/greeting.c b/greeting.c
index 1a105e9..0543a0a 100644
--- a/greeting.c
+++ b/greeting.c
@@ -1,11 +1,19 @@
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
-void greet(char *name) {
- printf("Hello %s\n", name);
+static const char* alias_name = "ALTER_EGO";
+
+char* greet(char* name) {
+ char* alias = getenv(alias_name);
+ char* buffer = (char*)malloc(128);
+ snprintf(buffer, 128, "Hello %s!\n", alias == NULL ? name : alias);
+ return buffer;
}
int main(int argc, const char *argv[])
{
- greet("mo");
+ printf("%s\n", greet("mo"));
return 0;
}
diff --git a/greeting.h b/greeting.h
index 1533b88..3668e40 100644
--- a/greeting.h
+++ b/greeting.h
@@ -1,2 +1 @@
-
void greet(char *name);
diff --git a/greeting.rb b/greeting.rb
index d5ddf44..a0b31a2 100644
--- a/greeting.rb
+++ b/greeting.rb
@@ -3,7 +3,7 @@ require 'ffi'
class Greeting
extend FFI::Library
ffi_lib 'greeting'
- attach_function :greet, [:string], :int
+ attach_function :greet, [:string], :string
end
-Greeting.greet('mo')
+puts Greeting.greet('mo')