<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: building va_list variable in HP-UX Integrity in Operating System - HP-UX</title>
    <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159230#M689031</link>
    <description>&lt;P&gt;&amp;gt;for (i = 0; i &amp;lt; numvals; ++i) // reverse&lt;BR /&gt;&lt;BR /&gt;Oops, this is the wrong comment. It really should be: // widen to register size&lt;/P&gt;</description>
    <pubDate>Tue, 06 Sep 2011 06:33:16 GMT</pubDate>
    <dc:creator>Dennis Handly</dc:creator>
    <dc:date>2011-09-06T06:33:16Z</dc:date>
    <item>
      <title>building va_list varialbe in hpux itanium</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159226#M689027</link>
      <description>Hi Guys,&lt;BR /&gt;I want to copy value in the va_list variable.&lt;BR /&gt;I use to do this in HP-UX PARISC as follows&lt;BR /&gt;&lt;BR /&gt;va_list fun(void **vals, int numvals)&lt;BR /&gt;{&lt;BR /&gt;int x;&lt;BR /&gt;out=(void**)malloc(sizeof(void*)*(numvals+1));&lt;BR /&gt; for (x=0;x&lt;NUMVALS&gt;&lt;/NUMVALS&gt; {&lt;BR /&gt;     out[numvals - 1 - x] = vals[x];&lt;BR /&gt; }&lt;BR /&gt; out[x] = (void *)numvals;&lt;BR /&gt; return (va_list)(out + numvals);&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;But typecasting of void** to va_list is not working in HP-UX itanium.&lt;BR /&gt;can you please help me to know how can i build a va_list variable with some arguments.&lt;BR /&gt;&lt;BR /&gt;Thanks in advance</description>
      <pubDate>Tue, 11 Mar 2008 13:26:14 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159226#M689027</guid>
      <dc:creator>rakeshcs123</dc:creator>
      <dc:date>2008-03-11T13:26:14Z</dc:date>
    </item>
    <item>
      <title>Re: building va_list variable in HP-UX Integrity</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159227#M689028</link>
      <description>&lt;P&gt;What you are doing isn't portable. The only supported way to get a va_list is with va_start.&lt;BR /&gt;It does appear you know that the parms are in reverse order. But not that it is off by one.&lt;BR /&gt;&lt;BR /&gt;Also, you need to allocate an array of long long, not void*. Unless you know they are all pointers??&lt;BR /&gt;As to your return, you need to use a type hammer to get this right. va_list is a thingy and you can't do much with it. See:&lt;BR /&gt;&lt;A href="http://forums.itrc.hp.com/service/forums/questionanswer.do?threadId=1207141" target="_blank"&gt;http://h30499.www3.hp.com/t5/Languages-and-Scripting/experiencing-different-behaviour-for-va-list-initialization-with/m-p/5094394&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;out += numvals + 1&lt;BR /&gt;return *(va_list*)&amp;amp;out;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2011 06:30:14 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159227#M689028</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2011-09-06T06:30:14Z</dc:date>
    </item>
    <item>
      <title>Re: building va_list varialbe in hpux itanium</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159228#M689029</link>
      <description>Thanks for the reply. But this does not solve my problem.&lt;BR /&gt;My problem is i want to send variable arguments to a function.&lt;BR /&gt;I have two interface&lt;BR /&gt;1) method(char *val, ...)&lt;BR /&gt;{&lt;BR /&gt;va_list arglist;&lt;BR /&gt;va_start(arglist, val);&lt;BR /&gt;method(val, arglist);&lt;BR /&gt;va_end(arglist);&lt;BR /&gt;}&lt;BR /&gt;2) method(char *val, va_list arglist)&lt;BR /&gt;{&lt;BR /&gt;//Process the arglist&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;When i know how many arguments i have to pass to function i use the first function method call&lt;BR /&gt;if i dont know the number of arguments to pass then i first create the va_list variable with all the arguments and then pass it to second function method.&lt;BR /&gt;&lt;BR /&gt;i used above method fun to create the va_list variable in other platforms, but in hpux itanium this does not work. can any body tell me how to create va_list in hpux itanium so that i can pass those variables to second function.&lt;BR /&gt;&lt;BR /&gt;Many thanks in advance...</description>
      <pubDate>Fri, 14 Mar 2008 11:56:46 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159228#M689029</guid>
      <dc:creator>rakeshcs123</dc:creator>
      <dc:date>2008-03-14T11:56:46Z</dc:date>
    </item>
    <item>
      <title>Re: building va_list variable in HP-UX Integrity</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159229#M689030</link>
      <description>&lt;!--  !*#  --&gt;&lt;P&gt;&amp;gt;My problem is i want to send variable arguments to a function. I have two interface&lt;BR /&gt;&amp;gt;1) method(const char *val, ...)&lt;BR /&gt;&amp;gt; method(val, arglist);&lt;BR /&gt;&lt;BR /&gt;This is Standard and portable.&lt;BR /&gt;&lt;BR /&gt;&amp;gt;2) method(const char *val, va_list arglist)&lt;BR /&gt;&lt;BR /&gt;Again Standard and portable, provided your va_list is ONLY created by method 1).&lt;BR /&gt;&lt;BR /&gt;&amp;gt;i first create the va_list variable with all the arguments and then pass it to second function method.&lt;BR /&gt;&lt;BR /&gt;This is not portable and so is non-supported and illegal. Only va_start can create a va_list.&lt;BR /&gt;&lt;BR /&gt;Note: you didn't see this here but you might try something like this. :-)&lt;BR /&gt;&lt;BR /&gt;It is PA32 with the reversed list. IPF and PA64 have args in increasing order.&lt;BR /&gt;#include &amp;lt;stdarg.h&amp;gt;﻿&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;﻿&lt;BR /&gt;#include &amp;lt;stdlib.h&amp;gt;﻿&lt;BR /&gt;// portable solution&lt;BR /&gt;void foo(const char *fmt, ...) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; va_list ap;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; va_start(ap, fmt);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; vprintf(fmt, ap);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; va_end(ap);&lt;BR /&gt;}&lt;BR /&gt;// not portable at all!&lt;BR /&gt;void bar(const char *fmt, void **vals) {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int numvals, i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (numvals = 0; vals[numvals]; ++numvals) {}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; long long *out = (long long*)malloc(sizeof(long long)*numvals);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (i = 0; i &amp;lt; numvals; ++i) // widen to register size﻿&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; out[i] = (long long)vals[i];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // use a type hammer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; vprintf(fmt, *(va_list*)&amp;amp;out);&lt;BR /&gt;}&lt;BR /&gt;int main() {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foo("%s %s %s\n", "hi", "ho", "off we go");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; const char *lists[] = { "hi", "ho", "off we go", NULL };&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bar("%s %s %s\n", (void**)lists);&lt;BR /&gt;}&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2011 07:18:43 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159229#M689030</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2011-09-06T07:18:43Z</dc:date>
    </item>
    <item>
      <title>Re: building va_list variable in HP-UX Integrity</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159230#M689031</link>
      <description>&lt;P&gt;&amp;gt;for (i = 0; i &amp;lt; numvals; ++i) // reverse&lt;BR /&gt;&lt;BR /&gt;Oops, this is the wrong comment. It really should be: // widen to register size&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2011 06:33:16 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159230#M689031</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2011-09-06T06:33:16Z</dc:date>
    </item>
    <item>
      <title>Re: building va_list variable in HP-UX Integrity</title>
      <link>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159231#M689032</link>
      <description>&lt;P&gt;If the replies answered your questions, you should read the following about assigning points:&lt;BR /&gt;&lt;A href="http://forums.itrc.hp.com/service/forums/helptips.do?#33" target="_blank"&gt;http://forums.itrc.hp.com/service/forums/helptips.do?#33&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Sep 2011 06:32:49 GMT</pubDate>
      <guid>https://community.hpe.com/t5/operating-system-hp-ux/building-va-list-varialbe-in-hpux-itanium/m-p/4159231#M689032</guid>
      <dc:creator>Dennis Handly</dc:creator>
      <dc:date>2011-09-06T06:32:49Z</dc:date>
    </item>
  </channel>
</rss>

