[prev in list] [next in list] [prev in thread] [next in thread] 

List:       midgard-dev
Subject:    [midgard-cvs] cvs: midgard /mod mod_midgard.c  /php/midgard mgd_apache.h mgd_basic.c
From:       emile <cvslog () midgard-project ! org>
Date:       2000-10-30 18:50:02
[Download RAW message or body]

emile		Mon Oct 30 19:50:02 2000 EDT

  Modified files:
    /midgard/mod	mod_midgard.c 
    /midgard/php/midgard	mgd_apache.h mgd_basic.c 
  Log:
  $midgard->self holds the full path to the script. This will be == uri
  for static pages, and uri sans argv parameters for active scripts.
  
  
Index: midgard/mod/mod_midgard.c
diff -u midgard/mod/mod_midgard.c:1.61 midgard/mod/mod_midgard.c:1.62
--- midgard/mod/mod_midgard.c:1.61	Mon Oct 30 11:35:10 2000
+++ midgard/mod/mod_midgard.c	Mon Oct 30 19:50:02 2000
@@ -1,4 +1,4 @@
-/* $Id: mod_midgard.c,v 1.61 2000/10/30 10:35:10 emile Exp $
+/* $Id: mod_midgard.c,v 1.62 2000/10/30 18:50:02 emile Exp $
  *
  * mod_midgard.c  Midgard address translation and user authentication module
  *
@@ -79,6 +79,7 @@
    } auth;
 
    int prelen;
+   int self_len;
 
    struct {
       int status;
@@ -632,6 +633,7 @@
 	rcfg->author = 0;
 
 	rcfg->prelen = 0;
+	rcfg->self_len = 0;
 
 	rcfg->resource.id = 0;
 	rcfg->resource.status = DECLINED;
@@ -849,7 +851,6 @@
 				   "up=$d AND name=$q", NULL,
 				   rcfg->resource.id, path);
 
-
 #if HAVE_MIDGARD_PAGELINKS
 	} // !pagelink_ok
 #endif
@@ -901,6 +902,8 @@
 	char *uri, *tok, *part, **arg;
 	int tmp, addslash;
 
+   rcfg->self_len = rcfg->prelen;
+
 	tok = strrchr(rcfg->req->uri + rcfg->prelen, '/');
 	part = tok ? strchr(tok + 1, '.') : NULL;
 	addslash = !tok || (*(tok + 1) != '\0' && !part);
@@ -922,7 +925,9 @@
 	midgard_get_pelements(rcfg, 1);
 
 	/* Traverse the page structure */
-	for (tok = strtok(uri, "/"); tok; tok = strtok(NULL, "/")) {
+	for (tok = strsep(&uri, "/"); tok; tok = strsep(&uri, "/")) {
+		if (!*tok) { rcfg->self_len += 1; continue; }
+
 		midgard_find_pathelement(dcfg, rcfg, tok);
 
 		if (rcfg->resource.status != OK) {
@@ -938,8 +943,12 @@
 				      rcfg->resource.id);
 			break;
 		}
+
+      rcfg->self_len += strlen(tok) + 1;
 	}
 
+   rcfg->self_len--;
+
 	if (rcfg->resource.type == MOD_MIDGARD_RESOURCE_BLOB)
 		return;
 	if (rcfg->resource.type == MOD_MIDGARD_RESOURCE_PAGE) {
@@ -949,8 +958,9 @@
             addslash = 0;
 				arg = (char **) ap_push_array(rcfg->argv);
 				*arg = ap_pstrdup(rcfg->pool, tok);
-				tok = strtok(NULL, "/");
+				tok = strsep(&uri, "/");
 			}
+         if (!addslash) rcfg->self_len++;
 		}
 		
 		if (addslash) {
@@ -1127,6 +1137,7 @@
 			rcfg->resource.id = 0;
 			rcfg->auth.required = ftstatus->auth_required;
 			rcfg->prelen = 0;
+			rcfg->self_len = strlen(r->uri);
 #if HAVE_MIDGARD_SITEGROUPS
 			mgd_set_sitegroup(rcfg->mgd, ftstatus->sitegroup);
 #endif
Index: midgard/php/midgard/mgd_apache.h
diff -u midgard/php/midgard/mgd_apache.h:1.7 midgard/php/midgard/mgd_apache.h:1.8
--- midgard/php/midgard/mgd_apache.h:1.7	Fri Oct 13 00:25:50 2000
+++ midgard/php/midgard/mgd_apache.h	Mon Oct 30 19:50:02 2000
@@ -58,6 +58,7 @@
    } auth;
 
    int prelen;
+   int self_len;
 
    struct {
       int status;
Index: midgard/php/midgard/mgd_basic.c
diff -u midgard/php/midgard/mgd_basic.c:1.6 midgard/php/midgard/mgd_basic.c:1.7
--- midgard/php/midgard/mgd_basic.c:1.6	Tue Oct  3 15:09:49 2000
+++ midgard/php/midgard/mgd_basic.c	Mon Oct 30 19:50:02 2000
@@ -1,4 +1,4 @@
-/* $Id: mgd_basic.c,v 1.6 2000/10/03 13:09:49 emile Exp $
+/* $Id: mgd_basic.c,v 1.7 2000/10/30 18:50:02 emile Exp $
  *
  * mgd_stub.c  Sample stub for Midgard PHP module
  *
@@ -207,6 +207,9 @@
 
 	add_property_string(return_value, "uri",
 			    safe_estrdup(MGD_RCFG->req->uri), 0);
+
+	add_property_string(return_value, "self",
+			    safe_estrndup(MGD_RCFG->req->uri, MGD_RCFG->self_len), 0);
 }
 
 MGD_FUNCTION(auth_midgard)



---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@midgard-project.org
For additional commands, e-mail: cvs-help@midgard-project.org

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic