Re: Patch for porting Elinks to OpenSolaris

Muktha Narayan <[email protected]> Tue, 24 Feb 2009 14:51:25 +0530
Newsgroups gmane.comp.web.links
Message-ID <[email protected]>
Hi,

Kalle Olavi Niemitalo wrote:
> "Mark A. Carlson" <[email protected]> writes:
>
>   
>> +#if defined (__SUNPRO_C)
>> +static inline void
>> +#else
>>  inline void
>> +#endif
>>  load_frames(struct session *ses, struct document_view *doc_view)
>>     
>
> This looks like <http://bugzilla.elinks.cz/show_bug.cgi?id=1047>.
> That bug was reported against ELinks 0.12pre1 though.
> I haven't heard about such problems with 0.11.5 before.
> It looks like 0.10.6 has the same bug; can you confirm?
>
>   
Yes, elinks-0.10.6 has the same bug (in session.c and conv.c).
> Because ELinks is violating a C99 requirement, rather than
> something specific to Sun, I don't think it's right to make an
> exception for the Sun compiler.  Instead, we should make the
> functions not inline and measure how that affects the speed.
> If it hurts too much, then define e.g. static inline int
> inline_elinks_ulongcat() and make both int elinks_ulongcat()
> and int elinks_longcat() call that.  GCC should generate from
> that approximately the same code as from the current sources.
>   
Attached  is the modified patch incorporating the above comments. Please 
confirm if the patch is acceptable.

Regards
Muktha

_______________________________________________
elinks-dev mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-dev
elinks.patch (text/x-patch, 1.5 KB)
--- elinks-0.11.5/src/session/session.c	2009-02-23 03:50:00.852630689 -0800
+++ elinks-0.11.5-new/src/session/session.c	2009-02-23 03:49:38.152751175 -0800
@@ -423,7 +423,7 @@ load_ecmascript_imports(struct session *
 #define load_ecmascript_imports(ses, doc_view)
 #endif
 
-inline void
+void
 load_frames(struct session *ses, struct document_view *doc_view)
 {
 	struct document *document = doc_view->document;
--- elinks-0.11.5/src/util/conv.c	2009-02-23 03:54:45.261625605 -0800
+++ elinks-0.11.5-new/src/util/conv.c	2009-02-24 00:10:55.615002838 -0800
@@ -46,8 +46,8 @@
  */
 /* The function returns 0 if OK or width needed for the whole number to fit
  * there, if it had to be truncated. A negative value signs an error. */
-int inline
-elinks_ulongcat(unsigned char *s, unsigned int *slen,
+static int inline
+inline_elinks_ulongcat(unsigned char *s, unsigned int *slen,
 		unsigned long number, unsigned int width,
 		unsigned char fillchar, unsigned int base,
 		unsigned int upper)
@@ -103,8 +103,17 @@ elinks_ulongcat(unsigned char *s, unsign
 	return ret;
 }
 
+int 
+elinks_ulongcat(unsigned char *s, unsigned int *slen,
+		unsigned long number, unsigned int width,
+		unsigned char fillchar, unsigned int base,
+		unsigned int upper)
+{
+	inline_elinks_ulongcat(s, slen, number, width, fillchar, base, upper);
+}
+
 /* Similar to elinks_ulongcat() but for long number. */
-int inline
+int 
 elinks_longcat(unsigned char *s, unsigned int *slen,
 	       long number, unsigned int width,
 	       unsigned char fillchar, unsigned int base,