You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by zw...@apache.org on 2012/03/08 19:14:02 UTC
git commit: TS-1124 Try to fix regex_remap to build on Solaris, try 3
Updated Branches:
refs/heads/master ab54b4e2b -> 0b39cd771
TS-1124 Try to fix regex_remap to build on Solaris, try 3
Project: http://git-wip-us.apache.org/repos/asf/trafficserver/repo
Commit: http://git-wip-us.apache.org/repos/asf/trafficserver/commit/0b39cd77
Tree: http://git-wip-us.apache.org/repos/asf/trafficserver/tree/0b39cd77
Diff: http://git-wip-us.apache.org/repos/asf/trafficserver/diff/0b39cd77
Branch: refs/heads/master
Commit: 0b39cd77115fdde46cbda42174a29a1449dc4277
Parents: ab54b4e
Author: Leif Hedstrom <le...@ogre.com>
Authored: Thu Mar 8 11:13:55 2012 -0700
Committer: Leif Hedstrom <le...@ogre.com>
Committed: Thu Mar 8 11:13:55 2012 -0700
----------------------------------------------------------------------
plugins/regex_remap/regex_remap.cc | 52 +++++++++++--------------------
1 files changed, 18 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/trafficserver/blob/0b39cd77/plugins/regex_remap/regex_remap.cc
----------------------------------------------------------------------
diff --git a/plugins/regex_remap/regex_remap.cc b/plugins/regex_remap/regex_remap.cc
index e631736..a66eed9 100644
--- a/plugins/regex_remap/regex_remap.cc
+++ b/plugins/regex_remap/regex_remap.cc
@@ -24,10 +24,6 @@
#define UNUSED __attribute__ ((unused))
static char UNUSED rcsId__regex_remap_cc[] = "@(#) $Id$ built on " __DATE__ " " __TIME__;
-#if defined(solaris)
-#define _POSIX_PTHREAD_SEMANTICS
-#endif
-
#include <sys/types.h>
#include <stdio.h>
#include <time.h>
@@ -43,31 +39,16 @@ static char UNUSED rcsId__regex_remap_cc[] = "@(#) $Id$ built on " __DATE__ " "
#include <fstream>
#include <string>
-static const char* PLUGIN_NAME = "regex_remap";
-
-// TODO: We really ought to expose these data types and atomic functions to the plugin APIs.
-typedef volatile int32_t vint32;
-typedef vint32 *pvint32;
-
-#if defined(__SUNPRO_CC)
-typedef volatile uint32_t vuint32;
-typedef vuint32 *pvuint32;
-
-static inline int atomic_increment(pvint32 mem, int value)
-{
- return ((uint32_t)atomic_add_32_nv((pvuint32)mem, (uint32_t)value)) - value;
-}
-#else
-static inline int atomic_increment(pvint32 mem, int value)
-{
- return __sync_fetch_and_add(mem, value);
-}
-#endif
+// Get some specific stuff from libts, yes, we can do that now that we build inside the core.
+#include "ink_platform.h"
+#include "ink_atomic.h"
+#include "ink_time.h"
+static const char* PLUGIN_NAME = "regex_remap";
-// Constants, changed to define's to make SunStudio happy ....
-#define OVECCOUNT 30 // We support $0 - $9 x2 ints, and this needs to be 1.5x that
-#define MAX_SUBS 32 // No more than 32 substitution variables in the subst string
+// Constants
+static const int OVECCOUNT = 30; // We support $0 - $9 x2 ints, and this needs to be 1.5x that
+static const int MAX_SUBS = 32; // No more than 32 substitution variables in the subst string
// TODO: This should be "autoconf'ed" or something ...
#define DEFAULT_PATH "/usr/local/etc/regex_remap/"
@@ -224,7 +205,7 @@ class RemapRegex
inline void
increment()
{
- atomic_increment(&(_hits), 1);
+ ink_atomic_increment(&(_hits), 1);
}
// Compile and study the regular expression.
@@ -716,9 +697,9 @@ TSRemapDeleteInstance(void* ih)
if (ri->profile) {
char now[64];
- const time_t tim = time(NULL);
+ const ink_time_t tim = time(NULL);
- if (ctime_r(&tim, now))
+ if (ink_ctime_r(&tim, now))
now[strlen(now) - 1] = '\0';
else {
memcpy(now, "unknown time", 12);
@@ -773,8 +754,10 @@ TSRemapDoRemap(void* ih, TSHttpTxn txnp, TSRemapRequestInfo *rri)
int dest_len;
TSRemapStatus retval = TSREMAP_DID_REMAP;
RemapRegex* re = ri->first;
- char match_buf[req_url.url_len + 32]; // Worst case scenario and padded for /,? and ;
int match_len = 0;
+ char *match_buf;
+
+ match_buf = (char*)alloca(req_url.url_len + 32);
if (ri->method) { // Prepend the URI path or URL with the HTTP method
TSMBuffer mBuf;
@@ -839,13 +822,14 @@ TSRemapDoRemap(void* ih, TSHttpTxn txnp, TSRemapRequestInfo *rri)
// Update profiling if requested
if (ri->profile) {
re->increment();
- atomic_increment(&(ri->hits), 1);
+ ink_atomic_increment(&(ri->hits), 1);
}
if (new_len > 0) {
- char dest[new_len+8];
+ char* dest;
struct sockaddr const* addr = TSHttpTxnClientAddrGet(txnp);
+ dest = (char*)alloca(new_len+8);
dest_len = re->substitute(dest, match_buf, ovector, lengths, rri, &req_url, addr);
TSDebug(PLUGIN_NAME, "New URL is estimated to be %d bytes long, or less", new_len);
@@ -885,7 +869,7 @@ TSRemapDoRemap(void* ih, TSHttpTxn txnp, TSRemapRequestInfo *rri)
if (re == NULL) {
retval = TSREMAP_NO_REMAP; // No match
if (ri->profile)
- atomic_increment(&(ri->misses), 1);
+ ink_atomic_increment(&(ri->misses), 1);
}
}