[svn-commits] murf: branch group/http_mods r59990 - in /team/group/http_mods/main/minimime:...

svn-commits at lists.digium.com svn-commits at lists.digium.com
Tue Apr 3 13:20:50 MST 2007


Author: murf
Date: Tue Apr  3 15:20:50 2007
New Revision: 59990

URL: http://svn.digium.com/view/asterisk?view=rev&rev=59990
Log:
fixed a few problems; but the BIG one is that the mm_mimeheader struct doesn't have a param list in it, and I suspect the API doesn't have anything for that either.

Modified:
    team/group/http_mods/main/minimime/mimeparser.y
    team/group/http_mods/main/minimime/mm.h
    team/group/http_mods/main/minimime/mytest_files/mytest.c

Modified: team/group/http_mods/main/minimime/mimeparser.y
URL: http://svn.digium.com/view/asterisk/team/group/http_mods/main/minimime/mimeparser.y?view=diff&rev=59990&r1=59989&r2=59990
==============================================================================
--- team/group/http_mods/main/minimime/mimeparser.y (original)
+++ team/group/http_mods/main/minimime/mimeparser.y Tue Apr  3 15:20:50 2007
@@ -47,6 +47,7 @@
 #include "mm.h"
 #include "mm_internal.h"
 
+int set_boundary(char *);
 extern int lineno;
 extern int condition;
 
@@ -309,11 +310,13 @@
 	CONTENTDISPOSITION_HEADER COLON content_disposition EOL
 	{
 		dprintf2("Content-Disposition -> %s\n", $3);
+		current_mimepart->disposition_type = xstrdup($3);
 	}
 	|
 	CONTENTDISPOSITION_HEADER COLON content_disposition content_disposition_parameters EOL
 	{
-		dprintf2("Content-Disposition (P) -> %s\n", $3);
+		dprintf2("Content-Disposition (P) -> %s; params\n", $3);
+		current_mimepart->disposition_type = xstrdup($3);
 	}
 	;
 
@@ -443,19 +446,22 @@
 content_disposition_parameter:
 	WORD EQUAL contenttype_parameter_value
 	{
-		if (!strcasecmp($3, "filename") 
+		if (!strcasecmp($1, "filename") 
 		    && current_mimepart->filename == NULL) {
 			current_mimepart->filename = xstrdup($3);
-		} else if (!strcasecmp($3, "creation-date")
+		} else if (!strcasecmp($1, "name")
+		    && current_mimepart->the_name == NULL) {
+			current_mimepart->the_name = xstrdup($3);
+		} else if (!strcasecmp($1, "creation-date")
 		    && current_mimepart->creation_date == NULL) {
 			current_mimepart->creation_date = xstrdup($3);
-		} else if (!strcasecmp($3, "modification-date")
+		} else if (!strcasecmp($1, "modification-date")
 		    && current_mimepart->modification_date == NULL) {
 			current_mimepart->modification_date = xstrdup($3);
-		} else if (!strcasecmp($3, "read-date")
+		} else if (!strcasecmp($1, "read-date")
 		    && current_mimepart->read_date == NULL) {
 		    	current_mimepart->read_date = xstrdup($3);
-		} else if (!strcasecmp($3, "size")
+		} else if (!strcasecmp($1, "size")
 		    && current_mimepart->disposition_size == NULL) {
 		    	current_mimepart->disposition_size = xstrdup($3);
 		} else {
@@ -474,11 +480,13 @@
 contenttype_parameter_value:
 	WORD
 	{
+		dprintf2("contenttype_param_val: WORD=%s\n", $1);
 		$$ = $1;
 	}
 	|
 	TSPECIAL
 	{
+		dprintf2("contenttype_param_val: TSPECIAL\n");
 		/* For broken MIME implementation */
 		if (parsemode != MM_PARSE_LOOSE) {
 			mm_errno = MM_ERROR_MIME;
@@ -493,6 +501,7 @@
 	|
 	'"' TSPECIAL '"'
 	{
+		dprintf2("contenttype_param_val: \"TSPECIAL\"\n" );
 		$$ = $2;
 	}
 	;
@@ -558,6 +567,8 @@
 		}	
 		current_mimepart->opaque_body = body;
 		current_mimepart->body = body + offset;
+		current_mimepart->opaque_length = strlen(body);
+		current_mimepart->length = current_mimepart->opaque_length - offset;
 	}
 	;
 

Modified: team/group/http_mods/main/minimime/mm.h
URL: http://svn.digium.com/view/asterisk/team/group/http_mods/main/minimime/mm.h?view=diff&rev=59990&r1=59989&r2=59990
==============================================================================
--- team/group/http_mods/main/minimime/mm.h (original)
+++ team/group/http_mods/main/minimime/mm.h Tue Apr  3 15:20:50 2007
@@ -224,6 +224,7 @@
 
 	struct mm_content *type;
 
+	char *the_name;
 	char *disposition_type;
 	char *filename;
 	char *creation_date;

Modified: team/group/http_mods/main/minimime/mytest_files/mytest.c
URL: http://svn.digium.com/view/asterisk/team/group/http_mods/main/minimime/mytest_files/mytest.c?view=diff&rev=59990&r1=59989&r2=59990
==============================================================================
--- team/group/http_mods/main/minimime/mytest_files/mytest.c (original)
+++ team/group/http_mods/main/minimime/mytest_files/mytest.c Tue Apr  3 15:20:50 2007
@@ -46,6 +46,11 @@
 	else
 		printf("FAILURE: Could not get the Content-Disposition header value!\n");
 
+	/* hmmm... strange, headers don't have params, which is really quite not-nice! */
+	/* but the author has been storing Content-Disposition params in the part structure */
+
+	printf("Interesting: the mimepart name is %s\n", part->the_name);
+
 	res = mm_mimepart_getlength(part);
 	if (res)
 		printf("SUCCESS: Got a non-zero value for the body length: %d\n", res);



More information about the svn-commits mailing list