trinidad_init_services 1.1.3 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +3 -0
  3. data/History.txt +6 -0
  4. data/README.md +95 -0
  5. data/Rakefile +9 -58
  6. data/bin/trinidad_init_service +3 -4
  7. data/init.d/trinidad.erb +33 -12
  8. data/jsvc-unix-src/CHANGES.txt +62 -0
  9. data/jsvc-unix-src/INSTALL.txt +81 -0
  10. data/jsvc-unix-src/Makedefs.in +32 -0
  11. data/jsvc-unix-src/Makefile.in +42 -0
  12. data/jsvc-unix-src/configure +4417 -0
  13. data/jsvc-unix-src/configure.in +141 -0
  14. data/jsvc-unix-src/man/README +20 -0
  15. data/jsvc-unix-src/man/fetch.sh +36 -0
  16. data/jsvc-unix-src/man/jsvc.1.xml +214 -0
  17. data/jsvc-unix-src/native/.indent.pro +7 -0
  18. data/jsvc-unix-src/native/Makefile.in +46 -0
  19. data/jsvc-unix-src/native/arguments.c +476 -0
  20. data/jsvc-unix-src/native/arguments.h +94 -0
  21. data/jsvc-unix-src/native/debug.c +87 -0
  22. data/jsvc-unix-src/native/debug.h +65 -0
  23. data/jsvc-unix-src/native/dso-dlfcn.c +62 -0
  24. data/jsvc-unix-src/native/dso-dyld.c +153 -0
  25. data/jsvc-unix-src/native/dso.h +38 -0
  26. data/jsvc-unix-src/native/help.c +106 -0
  27. data/jsvc-unix-src/native/help.h +24 -0
  28. data/jsvc-unix-src/native/home.c +265 -0
  29. data/jsvc-unix-src/native/home.h +47 -0
  30. data/jsvc-unix-src/native/java.c +608 -0
  31. data/jsvc-unix-src/native/java.h +35 -0
  32. data/jsvc-unix-src/native/jsvc-unix.c +1267 -0
  33. data/jsvc-unix-src/native/jsvc.h +55 -0
  34. data/jsvc-unix-src/native/location.c +151 -0
  35. data/jsvc-unix-src/native/location.h +29 -0
  36. data/jsvc-unix-src/native/locks.c +52 -0
  37. data/jsvc-unix-src/native/locks.h +40 -0
  38. data/jsvc-unix-src/native/replace.c +121 -0
  39. data/jsvc-unix-src/native/replace.h +39 -0
  40. data/jsvc-unix-src/native/signals.c +105 -0
  41. data/jsvc-unix-src/native/signals.h +34 -0
  42. data/jsvc-unix-src/native/version.h +63 -0
  43. data/jsvc-unix-src/support/apfunctions.m4 +110 -0
  44. data/jsvc-unix-src/support/apjava.m4 +94 -0
  45. data/jsvc-unix-src/support/apsupport.m4 +155 -0
  46. data/jsvc-unix-src/support/buildconf.sh +33 -0
  47. data/jsvc-unix-src/support/config.guess +1371 -0
  48. data/jsvc-unix-src/support/config.sub +1760 -0
  49. data/jsvc-unix-src/support/install.sh +128 -0
  50. data/jsvc-unix-src/support/mkdist.sh +104 -0
  51. data/lib/trinidad/daemon.rb +31 -0
  52. data/lib/trinidad_init_services.rb +2 -30
  53. data/lib/trinidad_init_services/configuration.rb +91 -14
  54. data/lib/trinidad_init_services/version.rb +5 -0
  55. data/spec/spec_helper.rb +5 -6
  56. data/spec/trinidad_daemon_spec.rb +0 -1
  57. data/spec/trinidad_init_services/configuration_spec.rb +34 -1
  58. data/trinidad_init_services.gemspec +14 -51
  59. metadata +146 -87
  60. data/README +0 -63
  61. data/trinidad-libs/jsvc_linux +0 -0
@@ -0,0 +1,55 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id: jsvc.h 921756 2010-03-11 09:38:58Z mturk $ */
18
+ #ifndef __JSVC_H__
19
+ #define __JSVC_H__
20
+
21
+ #include <stdio.h>
22
+ #include <stdlib.h>
23
+ #include <stdarg.h>
24
+ #include <string.h>
25
+ #include <sys/types.h>
26
+ #include <sys/stat.h>
27
+
28
+ /* Definitions for booleans */
29
+ #ifdef OS_DARWIN
30
+ #include <stdbool.h>
31
+ #else
32
+ typedef enum {
33
+ false,
34
+ true
35
+ } bool;
36
+ #endif
37
+
38
+ #include "version.h"
39
+ #include "debug.h"
40
+ #include "arguments.h"
41
+ #include "home.h"
42
+ #include "location.h"
43
+ #include "replace.h"
44
+ #include "dso.h"
45
+ #include "java.h"
46
+ #include "help.h"
47
+ #include "signals.h"
48
+ #include "locks.h"
49
+
50
+ int main(int argc, char *argv[]);
51
+ void main_reload(void);
52
+ void main_shutdown(void);
53
+
54
+ #endif /* ifndef __JSVC_H__ */
55
+
@@ -0,0 +1,151 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id: location.c 1199195 2011-11-08 11:30:20Z mturk $ */
18
+ #include "jsvc.h"
19
+
20
+ /* Locations of various JVM files. We have to deal with all this madness since
21
+ * we're not distributed togheter (yet!) with an official VM distribution. All
22
+ * this CRAP needs improvement, and based on the observation of default
23
+ * distributions of VMs and OSes. If it doesn't work for you, please report
24
+ * your VM layout (ls -laR) and system details (build/config.guess) so that we
25
+ * can improve the search algorithms.
26
+ */
27
+
28
+ /* If JAVA_HOME is not defined we search this list of paths (OS-dependant)
29
+ * to find the default location of the JVM.
30
+ */
31
+ char *location_home[] = {
32
+ #if defined(OS_DARWIN)
33
+ "/System/Library/Frameworks/JavaVM.framework/Home",
34
+ "/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home/",
35
+ #elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD)
36
+ "/usr/java",
37
+ "/usr/local/java",
38
+ "/etc/alternatives/java_sdk",
39
+ "/etc/alternatives/jre",
40
+ #elif defined(OS_CYGWIN)
41
+ "/cygdrive/c/WINNT/system32/java",
42
+ #elif defined(OS_SYSV)
43
+ "/opt/java",
44
+ "/opt/java/jdk13",
45
+ #elif defined(OS_TRU64)
46
+ "/usr/opt/java142",
47
+ "/usr/opt/java13",
48
+ #elif defined(OS_HPUX)
49
+ "/opt/java6",
50
+ "/opt/java1.5",
51
+ "/opt/java1.4",
52
+ "/opt/java1.3",
53
+ #endif
54
+ NULL,
55
+ };
56
+
57
+ /* The jvm.cfg file defines the VMs available for invocation. So far, on all
58
+ * all systems I've seen it's in $JAVA_HOME/lib. If this file is not found,
59
+ * then the "default" VMs (from location_jvm_default) is searched, otherwise,
60
+ * we're going to look thru the "configured" VMs (from lod_cfgvm) lying
61
+ * somewhere around JAVA_HOME. (Only two, I'm happy)
62
+ */
63
+ char *location_jvm_cfg[] = {
64
+ "$JAVA_HOME/jre/lib/jvm.cfg", /* JDK */
65
+ "$JAVA_HOME/lib/jvm.cfg", /* JRE */
66
+ "$JAVA_HOME/jre/lib/" CPU "/jvm.cfg", /* JDK */
67
+ "$JAVA_HOME/lib/" CPU "/jvm.cfg", /* JRE */
68
+ NULL,
69
+ };
70
+
71
+ /* This is the list of "defaults" VM (searched when jvm.cfg is not found, as
72
+ * in the case of most JDKs 1.2.2
73
+ */
74
+ char *location_jvm_default[] = {
75
+ #if defined(OS_DARWIN)
76
+ "$JAVA_HOME/../Libraries/libjvm.dylib",
77
+ #elif defined(OS_CYGWIN)
78
+ "$JAVA_HOME/jre/bin/classic/jvm.dll", /* Sun JDK 1.3 */
79
+ "$JAVA_HOME/jre/bin/client/jvm.dll", /* Sun JDK 1.4 */
80
+ #elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_SYSV) || defined(OS_FREEBSD) || defined(OS_TRU64)
81
+ "$JAVA_HOME/jre/lib/" CPU "/classic/libjvm.so", /* Sun JDK 1.2 */
82
+ "$JAVA_HOME/jre/lib/" CPU "/server/libjvm.so", /* Sun JDK 1.4 */
83
+ "$JAVA_HOME/jre/lib/" CPU "/client/libjvm.so", /* Sun JDK 1.3 */
84
+ "$JAVA_HOME/jre/lib/" CPU "/libjvm.so", /* Sun JDK */
85
+ "$JAVA_HOME/lib/" CPU "/classic/libjvm.so", /* Sun JRE 1.2 */
86
+ "$JAVA_HOME/lib/" CPU "/server/libjvm.so", /* Sun JRE 1.4 */
87
+ "$JAVA_HOME/lib/" CPU "/client/libjvm.so", /* Sun JRE 1.3 */
88
+ "$JAVA_HOME/lib/" CPU "/libjvm.so", /* Sun JRE */
89
+ "$JAVA_HOME/jre/bin/" CPU "/classic/libjvm.so", /* IBM JDK 1.3 */
90
+ "$JAVA_HOME/jre/bin/" CPU "/libjvm.so", /* IBM JDK */
91
+ "$JAVA_HOME/bin/" CPU "/classic/libjvm.so", /* IBM JRE 1.3 */
92
+ "$JAVA_HOME/bin/" CPU "/libjvm.so", /* IBM JRE */
93
+ /* Those are "weirdos: if we got here, we're probably in troubles and
94
+ * we're not going to find anything, but hope never dies...
95
+ */
96
+ "$JAVA_HOME/jre/lib/" CPU "/classic/green_threads/libjvm.so",
97
+ #if defined(OSD_POSIX)
98
+ "$JAVA_HOME/lib/s390/client/green_threads/libjvm.so",
99
+ "$JAVA_HOME/lib/sparc/client/green_threads/libjvm.so",
100
+ #endif
101
+ "$JAVA_HOME/jre/lib/classic/libjvm.so",
102
+ "$JAVA_HOME/jre/lib/client/libjvm.so",
103
+ "$JAVA_HOME/jre/lib/libjvm.so",
104
+ "$JAVA_HOME/lib/classic/libjvm.so",
105
+ "$JAVA_HOME/lib/client/libjvm.so",
106
+ "$JAVA_HOME/lib/libjvm.so",
107
+ "$JAVA_HOME/jre/bin/classic/libjvm.so",
108
+ "$JAVA_HOME/jre/bin/client/libjvm.so",
109
+ "$JAVA_HOME/jre/bin/libjvm.so",
110
+ "$JAVA_HOME/bin/classic/libjvm.so",
111
+ "$JAVA_HOME/bin/client/libjvm.so",
112
+ "$JAVA_HOME/bin/libjvm.so",
113
+ "$JAVA_HOME/jre/lib/" CPU "/fast64/libjvm.so",
114
+ "$JAVA_HOME/jre/lib/" CPU "/fast32/libjvm.so",
115
+ "$JAVA_HOME/lib/" CPU "/fast64/libjvm.so",
116
+ "$JAVA_HOME/lib/" CPU "/fast32/libjvm.so",
117
+ #elif defined(OS_HPUX)
118
+ "$JAVA_HOME/jre/lib/" CPU "/server/libjvm." SO_EXT,
119
+ "$JAVA_HOME/jre/lib/" CPU "/client/libjvm." SO_EXT,
120
+ "$JAVA_HOME/jre/lib/" CPU "/hotspot/libjvm." SO_EXT,
121
+ "$JAVA_HOME/jre/lib/" CPU "/classic/libjvm." SO_EXT,
122
+ #endif
123
+ "/usr/lib/libgcj.so.7", /* gcc java libraries */
124
+ "/usr/lib/libgcj.so.6",
125
+ NULL,
126
+ };
127
+
128
+ /* This is the list of "configured" VM (searched when jvm.cfg is found, as
129
+ * in the case of most JDKs 1.3 (not IBM, for example), way easier than
130
+ * before, and lovely, indeed...
131
+ */
132
+ char *location_jvm_configured[] = {
133
+ #if defined(OS_DARWIN)
134
+ "$JAVA_HOME/../Libraries/lib$VM_NAME.dylib",
135
+ #elif defined(OS_CYGWIN)
136
+ "$JAVA_HOME/jre/bin/$VM_NAME/jvm.dll", /* Sun JDK 1.3 */
137
+ #elif defined(OS_LINUX) || defined(OS_SOLARIS) || defined(OS_BSD) || defined(OS_FREEBSD) || defined(OS_TRU64)
138
+ "$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/libjvm.so", /* Sun JDK 1.3 */
139
+ "$JAVA_HOME/lib/" CPU "/$VM_NAME/libjvm.so", /* Sun JRE 1.3 */
140
+ #elif defined(OS_HPUX)
141
+ "$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/libjvm." SO_EXT,
142
+ "$JAVA_HOME/lib/" CPU "/$VM_NAME/libjvm." SO_EXT,
143
+ #elif defined(OS_SYSV)
144
+ "$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/dce_threads/libjvm.so",
145
+ "$JAVA_HOME/jre/lib/" CPU "/$VM_NAME/green_threads/libjvm.so",
146
+ "$JAVA_HOME/lib/" CPU "/$VM_NAME/dce_threads/libjvm.so",
147
+ "$JAVA_HOME/lib/" CPU "/$VM_NAME/green_threads/libjvm.so",
148
+ #endif
149
+ NULL,
150
+ };
151
+
@@ -0,0 +1,29 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id: location.h 921765 2010-03-11 10:03:32Z mturk $ */
18
+ #ifndef __JSVC_LOCATION_H__
19
+ #define __JSVC_LOCATION_H__
20
+
21
+ #include "jsvc.h"
22
+
23
+ extern char *location_home[];
24
+ extern char *location_jvm_cfg[];
25
+ extern char *location_jvm_default[];
26
+ extern char *location_jvm_configured[];
27
+
28
+ #endif /* __JSVC_LOCATION_H__ */
29
+
@@ -0,0 +1,52 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id: java.c 909069 2010-02-11 16:43:36Z mturk $ */
18
+
19
+ /*
20
+ * as Cygwin does not support lockf, jsvc uses fcntl to emulate it.
21
+ */
22
+ #ifdef OS_CYGWIN
23
+ #include "jsvc.h"
24
+ #include <sys/fcntl.h>
25
+
26
+ /*
27
+ * File locking routine
28
+ */
29
+ int lockf(int fildes, int function, off_t size)
30
+ {
31
+ struct flock buf;
32
+
33
+ switch (function) {
34
+ case F_LOCK:
35
+ buf.l_type = F_WRLCK;
36
+ break;
37
+ case F_ULOCK:
38
+ buf.l_type = F_UNLCK;
39
+ break;
40
+ default:
41
+ return -1;
42
+ }
43
+ buf.l_whence = 0;
44
+ buf.l_start = 0;
45
+ buf.l_len = size;
46
+
47
+ return fcntl(fildes, F_SETLK, &buf);
48
+ }
49
+ #else
50
+ const char __unused_locks_c[] = __FILE__;
51
+ #endif
52
+
@@ -0,0 +1,40 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id$ */
18
+ #ifndef __JSVC_LOCKS_H__
19
+ #define __JSVC_LOCKS_H__
20
+
21
+ /*
22
+ * as Cygwin does not support locks, jsvc use NT API to emulate them.
23
+ */
24
+ #ifdef OS_CYGWIN
25
+
26
+ #define F_ULOCK 0 /* Unlock a previously locked region */
27
+ #define F_LOCK 1 /* Lock a region for exclusive use */
28
+
29
+ /*
30
+ * allow a file to be locked
31
+ * @param fildes an open file descriptor
32
+ * @param function a control value that specifies the action to be taken
33
+ * @param size number of bytes to lock
34
+ * @return Zero on success, a value less than 0 if an error was encountered
35
+ */
36
+ int lockf(int fildes, int function, off_t size);
37
+
38
+ #endif
39
+ #endif /* __JSVC_LOCKS_H__ */
40
+
@@ -0,0 +1,121 @@
1
+ /* Licensed to the Apache Software Foundation (ASF) under one or more
2
+ * contributor license agreements. See the NOTICE file distributed with
3
+ * this work for additional information regarding copyright ownership.
4
+ * The ASF licenses this file to You under the Apache License, Version 2.0
5
+ * (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ /* @version $Id: replace.c 921765 2010-03-11 10:03:32Z mturk $ */
18
+ #include "jsvc.h"
19
+
20
+ /* Replace all occurrences of a string in another */
21
+ int replace(char *new, int len, char *old, char *mch, char *rpl)
22
+ {
23
+ char *tmp;
24
+ int count;
25
+ int shift;
26
+ int nlen;
27
+ int olen;
28
+ int mlen;
29
+ int rlen;
30
+ int x;
31
+
32
+ /* The new buffer is NULL, fail */
33
+ if (new == NULL)
34
+ return -1;
35
+ /* The length of the buffer is less than zero, fail */
36
+ if (len < 0)
37
+ return -2;
38
+ /* The old buffer is NULL, fail */
39
+ if (old == NULL)
40
+ return -3;
41
+
42
+ /* The string to be matched is NULL or empty, simply copy */
43
+ if ((mch == NULL) || (strlen(mch) == 0)) {
44
+ olen = strlen(old);
45
+ if (len <= olen)
46
+ return (olen + 1);
47
+ strcpy(new, old);
48
+ return 0;
49
+ }
50
+
51
+ /* The string to be replaced is NULL, assume it's an empty string */
52
+ if (rpl == NULL)
53
+ rpl = "";
54
+
55
+ /* Evaluate some lengths */
56
+ olen = strlen(old);
57
+ mlen = strlen(mch);
58
+ rlen = strlen(rpl);
59
+
60
+ /* Calculate how many times the mch string appears in old */
61
+ tmp = old;
62
+ count = 0;
63
+ while ((tmp = strstr(tmp, mch)) != NULL) {
64
+ count++;
65
+ tmp += mlen;
66
+ }
67
+
68
+ /* We have no matches, simply copy */
69
+ if (count == 0) {
70
+ olen = strlen(old);
71
+ if (len <= olen)
72
+ return (olen + 1);
73
+ strcpy(new, old);
74
+ return 0;
75
+ }
76
+
77
+ /* Calculate how big the buffer must be to hold the translation
78
+ * and of how many bytes we need to shift the data
79
+ */
80
+ shift = rlen - mlen;
81
+ nlen = olen + (shift * count);
82
+ /* printf("Count=%d Shift= %d OLen=%d NLen=%d\n",count,shift,olen,nlen); */
83
+
84
+ /* Check if we have enough size in the buffer */
85
+ if (nlen >= len)
86
+ return (nlen + 1);
87
+
88
+ /* Copy over the old buffer in the new one (save memory) */
89
+ strcpy(new, old);
90
+
91
+ /* Start replacing */
92
+ tmp = new;
93
+ while ((tmp = strstr(tmp, mch)) != NULL) {
94
+ /* If shift is > 0 we need to move data from right to left */
95
+ if (shift > 0) {
96
+ for (x = (strlen(tmp) + shift); x > shift; x--) {
97
+ /*
98
+ printf("src %c(%d) dst %c(%d)\n",
99
+ tmp[x-shift],tmp[x-shift],tmp[x],tmp[x]);
100
+ */
101
+ tmp[x] = tmp[x - shift];
102
+ }
103
+ /* If shift is < 0 we need to move data from left to right */
104
+ }
105
+ else if (shift < 0) {
106
+ for (x = mlen; x < strlen(tmp) - shift; x++) {
107
+ /*
108
+ printf("src %c(%d) dst %c(%d)\n",
109
+ tmp[x],tmp[x],tmp[x+shift],tmp[x+shift]);
110
+ */
111
+ tmp[x + shift] = tmp[x];
112
+ }
113
+ }
114
+ /* If shift is = 0 we don't have to shift data */
115
+ strncpy(tmp, rpl, rlen);
116
+ tmp += rlen;
117
+ /* printf("\"%s\"\n",tmp); */
118
+ }
119
+ return 0;
120
+ }
121
+