On Wed, Dec 22, 2021 at 9:54 PM Reinhard Kotucha <reinhard.kotucha@web.de> wrote:
On 2021-12-21 at 11:41:37 +0100, luigi scarso wrote:

 > On Wed, Sep 8, 2021 at 9:56 AM luigi scarso <luigi.scarso@gmail.com> wrote:
 >
 > >
 > >
 > > On Sun, Sep 5, 2021 at 7:48 PM Reinhard Kotucha <reinhard.kotucha@web.de>
 > > wrote:
 > >
 > >>
 > >> Obviously.  But I doubt that wProcessorLevel is what's needed here.
 > >> Isn't there something like wProcessorArchitecture that distinguishes
 > >> between 32 and 64 bit?
 > >>
 > >
 > > seems so. I will check this weekend .
 > >
 > > --
 > > luigi
 > >
 >
 > It should be fixed,
 > we have now more PROCESSOR_ARCHITECTURE :
 >
 > +    case PROCESSOR_ARCHITECTURE_AMD64:
 > +        strcpy(uts->machine, "amd64");
 > +        break;
 > +    case PROCESSOR_ARCHITECTURE_ARM:
 > +        strcpy(uts->machine, "arm");
 > +        break;
 > +    case PROCESSOR_ARCHITECTURE_ARM64:
 > +        strcpy(uts->machine, "arm64");
 > +        break;
 > +    case PROCESSOR_ARCHITECTURE_IA64:
 > +        strcpy(uts->machine, "ia64");
 > +        break;

Thank you Luigi!

Currently I get "x86_64" on Linux.  Will it be sufficient check
whether the string ends with '64' in order to determine reliably
whether I'm on a 64 bit machine?  That would be nice because
conditional code or table lookups can be avoided.

hm, what we have now  ( always   #ifdef _WIN32   is true ) is :
 
    switch (sysinfo.wProcessorArchitecture) {
    case PROCESSOR_ARCHITECTURE_AMD64:
        strcpy(uts->machine, "amd64");
        break;
    case PROCESSOR_ARCHITECTURE_ARM:
        strcpy(uts->machine, "arm");
        break;
    case PROCESSOR_ARCHITECTURE_ARM64:
        strcpy(uts->machine, "arm64");
        break;
    case PROCESSOR_ARCHITECTURE_IA64:
        strcpy(uts->machine, "ia64");
        break;
    case PROCESSOR_ARCHITECTURE_PPC:
        strcpy(uts->machine, "ppc");
        break;
    case PROCESSOR_ARCHITECTURE_ALPHA:
        strcpy(uts->machine, "alpha");
        break;
    case PROCESSOR_ARCHITECTURE_MIPS:
        strcpy(uts->machine, "mips");
        break;
    case PROCESSOR_ARCHITECTURE_INTEL:
        /*
         * dwProcessorType is only valid in Win95 and Win98 and WinME
         * wProcessorLevel is only valid in WinNT
         */
        switch (os) {
        case Win95:
        case Win98:
            switch (sysinfo.dwProcessorType) {
            case PROCESSOR_INTEL_386:
            case PROCESSOR_INTEL_486:
            case PROCESSOR_INTEL_PENTIUM:
                sprintf(uts->machine, "i%ld", sysinfo.dwProcessorType);
                break;
            default:
                strcpy(uts->machine, "i386");
                break;
            }
            break;
        case WinNT:
            sprintf(uts->machine, "i%d86", sysinfo.wProcessorLevel);
            break;
        default:
            strcpy(uts->machine, "unknown");
            break;
        }
        break;
    default:
        strcpy(uts->machine, "unknown");
        break;
    }


--
luigi