Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Dariusz Piatkowski

Pages: [1] 2 3 ... 12
1
Programming / DosSetThreadAffinity - process or thread only?
« on: October 19, 2024, 02:52:52 pm »
Trying to learn a bit about SMP capabilities on our platform and I would like to understand the functionality of the DosSetThreadAffinity API.

The Toolkit 'Programming Guide and Reference Addendum' states "...DosSetThreadAffinity allows the calling thread to change the processor affinity mask for the current thread...", so this very much feels like THREAD only control for the current thread I am in, as in: executing right now.

In the meantime, I am curious if this can be applied to a process, and by default all of it's threads?

Further on, could I develop a system driver which would enforce the execution of specific programs (i.e. processes) on a specific CPU/core of a SMP system?

The example code shown in the addendum is:

Code: [Select]
#define INCL_DOS
#define INCL_32
#define INCL_DOSERRORS
#define INCL_NOPMAPI
#include <os2.h>
#include <stdio.h>

int main(void)
{
APIRET rc;
MPAFFINITY affinity;

rc = DosSetThreadAffinity(affinity);
printf("Set thread's affinity rc = %08.8xh\n", rc);
printf("Set thread's affinity affinity[0] = %08.8xh, affinity[1] = %08.8xh\n",
        affinity.mask[0], affinity.mask[1]);
return rc;
}

Given what is shown above, and the fact that no 'target THREAD' parameter is provided, I conclude that indeed this API will only control the current thread.

Any ideas where else I could dig up some info on this and the DosQueryThreadAffinity APIs?

Thanks, as always!

2
Internet / HTTPS server?
« on: October 02, 2024, 03:05:54 am »
I'm using Peter Moylan's excellent WebServe 2.4 at the moment to host a few of my thigns, but given the whole move from http to https, I started to think it would be nice to look into this further (have heard some complaints from people that they can't get to my stuff).

Sooo...what are our choices besides the Apache stuff?

3
Question for the masses: I'm at libtiff-tools 4.0.9 level here, and the 4.6.x release has been sitting out there in EXP state, so I thought I'd take a stab at it with the pre-req of course being the baseline libtiff itself.

The libtiff-tools however drops just about all the "tiff2..." EXE files...so tools themselves, and I see not legacy version out there that still provides these.

Specifically I am after the tiff2pdf.exe one, as PDFmergeNX uses that...

Sooo...I went back to the previous version b/c the latest & greatest doesn't quite seem to be just that.

Is there something else out there that has this? Doing a 'yum provides */tiff2pdf.exe' just lists the previous releases and shows nothing at the 4.6.x level.

EDIT
====

Just spotted libtiff-legacy-tools, but that's at 3.9.5-2 level, and wouldn't that be an older version of libtiff-tools-4.0.9-1? (which is what I had before I executed the upgrade)

4
Multimedia / mplayer - just stopped working...sort of...
« on: March 30, 2024, 07:23:15 pm »
I've been using mplayer for years...only recently (yesterday in fact) noticed that when attempting to play a MP4 file it looks like no actual video is created, although the app itself starts.

So looking into this I found the following in the LOG:

Quote
MPlayer SVN-r38083-9.1.0 (C) 2000-2021 MPlayer Team
Setting process priority: realtime

Playing G:\tmp\AUTO\20210128_201140.mp4.
Cache fill:  0.00% (0 bytes)

libavformat version 58.65.101 (internal)
libavformat file format detected.
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x307b00]Protocol name not provided, cannot determine
 if input is local or a network protocol, buffers and access patterns cannot be
configured optimally without knowing the protocol
[lavf] stream 0: video (h264), -vid 0
VIDEO:  [H264]  1920x1080  24bpp  30.000 fps  34089.8 kbps (4161.4 kbyte/s)
==========================================================================
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
libavcodec version 58.118.100 (internal)
Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
==========================================================================
Clip info:
 major_brand: mp42
 minor_version: 0
 compatible_brands: isommp42
 creation_time: 2021-01-29T01:14:08.000000Z
 location: +42.2680-083.0048/
 location-eng: +42.2680-083.0048/
 com.android.version: 10
 com.android.capture.fps: 30.000000
Load subtitles in G:\tmp\AUTO\
Audio: no sound
Starting playback...
Movie-Aspect is 1.78:1 - prescaling to correct movie aspect.
VO: [kva] 1920x1080 => 1920x1080 Planar YV12
KVA: Setup failed!!!
...

...indeed, the "KVA: Setup failed!!!" is reporting out a problem initiating the video outout.

OK, so I went back to my startup CMD, which is:

Code: [Select]
@mode 80,60
G:\apps\multimedia\mplayer\mplayer.exe -xy %1 %2 %3 %4 %5 %6

And here is what my mplayer.ini file looks like:

Quote
# Write your default config options here!
# VIDEO
vo=kva:snap

# 'geometry' settings, where '+0+0' is the top left
# 'x:y' will put the display at this specific location
# 'x%;y%' will put the display at this percentage of the overall screen location (50%:50% would be center of screen)

# slightly moved from LEFT and TOP sides, good for 720 playback
#geometry=10%

# full-screen-width for 1080 playback (fits on HEAD-0 window)
geometry=0%

#aspect=16:9
double=yes              # double buffering(recommended for subtitles)
autoq=100               # AUTO control the video quality
#vf=pp=de,hqdn3d        # additional post-processing options
#vf=pp                  # additional post-processing options
#framedrop="1"          # For slow machines
#hardframedrop="0"      # Make sure hard frame drop is off but can turn on easily now

# AUDIO
ao=kai:dart
#ao=kai:uniaud
#srate=48000
softvol-max=300

#font=g:\psfonts\verdana.ttf
#subfont=g:\psfonts\verdana.ttf

codecpath=g:\apps\multimedia\mplayer\codecs

# OTHER CONTROLS
msglevel:all=5          # set the DEBUG level (5 = DEFAULT)
cache=20480             # set the TOTAL cache size
cache-min=50            # fill xx% of TOTAL cache before playback start
autosync=30             # sync up video/audio by adjusting the algorithm
#mc=1.0                 # up to how many seconds/frame to adjust
priority=realtime       # set the priority of mplayer (idle,belownormal,normal,abovenormal,high,realtime)

# Video Overlay Options and VIO Message Window Options
#really-quiet=yes       # limit what the VIO window shows
#fixed-vo=yes           # keep display output window open between different feeds
colorkey=0x000001       # change the background to off-black, instead of bright green

# Setting for Browser User Agent response
user-agent=NSPlayer/4.1.0.3856

Is anything jumping out at anyone here? Like I said above, this is the config I've been running for somet time now, heck, my last update of anything is about 2022 timeframe.

Going to try with DIVE next to see if that results in something different...

As always: thanks everyone!

5
Utilities / LinearMemoryMap.cmd => new version produces an error...why?
« on: December 23, 2023, 05:06:46 pm »
So Steven Levine published an updated version of this awesome util, but I'm now seeing an error, which I can't quite decipher:

Code: [Select]
[G:\util\theseus]linearmemorymap
Writing results to G:\util\theseus\linearmemorymap-20231223-1059.lst

[G:\util\theseus]G:\OS2\CMD.EXE /c G:\UTIL\MISC\LinearMemoryMap.cmd -  1>G:\util\theseus\linearmemorymap-20231223-1059.lst
Running from G:\util\theseus
NOVALUE signaled at G:\UTIL\MISC\LinearMemoryMap.cmd line 190.
REXX reason = DIR.
Source ="if dir \== '' then".
   545 *-*         Call lineout 'STDERR', 'Exiting.';
Exiting.
       +++   Interactive trace. "Trace Off" to end debug, ENTER to Continue.

   546 *-*         Nop;

   547 *-*         If symbol('RC') \== 'VAR';

   547 *-*         Then;
   548 *-*           rc = 255;

   549 *-*         Exit rc;

ERROR signaled at G:\UTIL\MISC\LinearMemoryMap.cmd line 114.
REXX reason = G:\OS2\CMD.EXE /c G:\UTIL\MISC\LinearMemoryMap.cmd - >G:\util\theseus\linearmemorymap-20231223-1059.lst.
RC = 255.
Source ="cmd".
   545 *-*         Call lineout 'STDERR', 'Exiting.';
Exiting.
       +++   Interactive trace. "Trace Off" to end debug, ENTER to Continue.

   546 *-*         Nop;

   547 *-*         If symbol('RC') \== 'VAR';

   549 *-*         Exit rc;


I'm running this from the Theseus directory, the linearmemorymap-20231223-1059.lst is created, and appears to be fine.

Any ideas?

6
Programming / EXE header 'Module' field change - how?
« on: December 10, 2023, 09:09:05 pm »
This is more of a nuisance driven inquiry, but the UPSMONS util (UPS Monitor) has the following EXEHDR defintion:

Code: [Select]
...
Module:                         TEMPLATE
Description:                    VisPro/REXX Runtime Version 2.01, COPYRIGHT (c)
HockWare Inc. 1994
Executable format level:        0
CPU type:                       Intel 80386 or upwardly compatible
Operating system:               Operating System/2

Module type:                    Program
                                NO internal fixups in executable image
Application type:               Uses PM Windowing API
...

Subsequently, TEMPLATE is what shows up in Theseus instead of 'UPSMONS'.

Looking at this I thought: "hmm, so I'm guessing this may be coming from the EXE HDR", and indeed it is, "so how can I change that?"

Is there a quick way to to do so? I'm thinking one of the OS/2 Toolkit utils may do this...but nothing obvious jumps out at me looking at the "Tools" INF.

Any ideas?

7
Setup & Installation / sigh....Python3 upgrade - curl problem?
« on: December 10, 2023, 06:06:09 pm »
So this whole 'upgrade to python3' is by now a well traversed path, I did my reading, took to the CLI approach of executing: 'yum install python3 python2.7', which gave me the following results:

Code: [Select]
[G:\]yum install python3 python2.7
Loaded plugins: changelog, downloadonly, ps, replace, verify
Setting up Install Process
Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-comp
lete-transaction first to finish them.
--> Running transaction check
---> Package python2.7.pentium4 0:2.7.18-3.oc00 will be installed
--> Processing Dependency: python-rpm-macros for package: python2.7-2.7.18-3.oc00.pentium4
--> Processing Dependency: python-srpm-macros for package: python2.7-2.7.18-3.oc00.pentium4
---> Package python3.pentium4 0:3.9.17-1.oc00 will be installed
--> Processing Dependency: python3-libs = 3.9.17-1.oc00 for package: python3-3.9.17-1.oc00.pentium4
--> Processing Dependency: python39.dll for package: python3-3.9.17-1.oc00.pentium4
--> Running transaction check
---> Package python-libs.pentium4 0:2.7.6-25.oc00 will be obsoleted
--> Processing Dependency: python-libs = 2.7.6-25.oc00 for package: python-2.7.6-25.oc00.pentium4
---> Package python-rpm-macros.noarch 0:3.9-3.oc00 will be installed
---> Package python-srpm-macros.noarch 0:3.9-3.oc00 will be installed
---> Package python3-libs.pentium4 0:3.9.17-1.oc00 will be obsoleting
--> Running transaction check
---> Package python.pentium4 0:2.7.6-25.oc00 will be obsoleted
---> Package python-unversioned-command.pentium4 0:3.9.17-1.oc00 will be obsoleting
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================

 Package                      Arch       Version            Repository     Size
================================================================================

Installing:
 python-unversioned-command   pentium4   3.9.17-1.oc00      netlabs-rel   8.6 k
     replacing  python.pentium4 2.7.6-25.oc00
 python2.7                    pentium4   2.7.18-3.oc00      netlabs-rel    18 M
 python3                      pentium4   3.9.17-1.oc00      netlabs-rel    22 k
 python3-libs                 pentium4   3.9.17-1.oc00      netlabs-rel    13 M
     replacing  python-libs.pentium4 2.7.6-25.oc00
Installing for dependencies:
 python-rpm-macros            noarch     3.9-3.oc00         netlabs-rel   9.1 k
 python-srpm-macros           noarch     3.9-3.oc00         netlabs-rel    15 k

Transaction Summary
================================================================================

Install       6 Packages

Total download size: 30 M
Is this ok [y/N]:

INPUT => Y

Downloading Packages:
(1/6): python-rpm-ma | 9.1 kB  00:00
(2/6): python-srpm-m |  15 kB  00:00
(3/6): python-unvers | 8.6 kB  00:00
(4/6): python2.7-2.7 |  18 MB  00:07     ====-] 2.1 MB/s |  17 MB  00:00 ETA
(5/6): python3-3.9.1 |  22 kB  00:00
(6/6): python3-libs- |  13 MB  00:05     ==== ] 1.9 MB/s |  12 MB  00:00 ETA
--------------------------------------------------------------------------------

Total                                           2.2 MB/s |  30 MB     00:13

Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : python-srpm-macros-3.9-3.oc00.noarch                         1/8
  Installing : python3-libs-3.9.17-1.oc00.pentium4                          2/8
  Installing : python3-3.9.17-1.oc00.pentium4                               3/8
  Installing : python-rpm-macros-3.9-3.oc00.noarch                          4/8
  Installing : python2.7-2.7.18-3.oc00.pentium4                             5/8
  Installing : python-unversioned-command-3.9.17-1.oc00.pentium4            6/8
  Erasing    : python-2.7.6-25.oc00.pentium4                                7/8
  Erasing    : python-libs-2.7.6-25.oc00.pentium4                           8/8

Rpmdb checksum is invalid: dCDPT(pkg checksums): python3-libs.pentium4 0:3.9.17-1.oc00 - u

Following this upgrade my inventory of python RPM packages installed is as follows:

Code: [Select]
Installed Packages
python-dateutil.noarch                        2.6.0-1.oc00           installed
python-pycurl.pentium4                        7.19.5.1-2.oc00        installed
python-rpm-macros.noarch                      3.9-3.oc00             installed
python-srpm-macros.noarch                     3.9-3.oc00             installed
python-unversioned-command.pentium4           3.9.17-1.oc00          installed
python2-deltarpm.pentium4                     3.6-1.oc00             installed
python2-libxml2.pentium4                      2.9.10-3.oc00          installed
python2-rpm.pentium4                          4.13.0-20.oc00         installed
python2.7.pentium4                            2.7.18-3.oc00          installed
python3.pentium4                              3.9.17-1.oc00          installed
python3-libs.pentium4                         3.9.17-1.oc00          installed

Therefore, my next logical (and maybe this was a mistake???) step was to upgrade all the pythonx stuff to python3, which I went to ANPM for:

1) python3-dateutil - this seems to have gone fine
Code: [Select]
----------[ 10 Dec 2023 10:26:12 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_install_dep.py python3-dateutil
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0
----------[ 10 Dec 2023 10:26:25 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_install.py python3-dateutil
No argument pipe.
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
Running Transaction Check
Warning: RPMDB altered outside of yum.
PackageSackError(): Rpmdb checksum is invalid: dCDPT(pkg checksums): python3-six.noarch 0:1.10.0-2.oc00 - u
Error: Rpmdb checksum is invalid: dCDPT(pkg checksums): python3-six.noarch 0:1.10.0-2.oc00 - u
PackageSackError()
Return code: 0
----------[ 10 Dec 2023 10:26:41 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_list.py
Setting up yum
No argument pipe.
Adding temporary repositories
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
Initializing cache
Requesting package list
Return code: 0
----------[ 10 Dec 2023 10:27:05 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_info.py python3-six
Warning: progress pipe not available.
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0
----------[ 10 Dec 2023 10:27:17 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_files.py installed python3-six
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0
----------[ 10 Dec 2023 10:27:51 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_files.py installed python-unversioned-command
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0
----------[ 10 Dec 2023 10:28:02 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_info.py python-unversioned-command
Warning: progress pipe not available.
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0

2) python3-curl - this seems to have NOT gone fine
Code: [Select]
----------[ 10 Dec 2023 10:29:24 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_install_dep.py python3-pycurl
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
No argument pipe.
Return code: 0
----------[ 10 Dec 2023 10:29:32 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_install.py python3-pycurl
No argument pipe.
Enabling temporary repository arcanoae-sub
Enabling temporary repository arcanoae-exp
Enabling temporary repository arcanoae-stage
Enabling temporary repository arcanoae-arcaos
Running Transaction Check
Warning: RPMDB altered outside of yum.
PackageSackError(): Rpmdb checksum is invalid: dCDPT(pkg checksums): python3-pycurl.pentium4 0:7.44.1-3.oc00 - u
Error: Rpmdb checksum is invalid: dCDPT(pkg checksums): python3-pycurl.pentium4 0:7.44.1-3.oc00 - u
PackageSackError()
Return code: 0
----------[ 10 Dec 2023 10:29:58 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_list.py
Traceback (most recent call last):
  File "G:\UTIL\ANPM\scripts\yum_list.py", line 6, in <module>
    import yum
  File "G:/usr/lib/python2.7/site-packages/yum/__init__.py", line 52, in <module>
    import config
  File "G:/usr/lib/python2.7/site-packages/yum/config.py", line 30, in <module>
    from parser import ConfigPreProcessor, varReplace
  File "G:/usr/lib/python2.7/site-packages/yum/parser.py", line 4, in <module>
    import urlgrabber
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/__init__.py", line 55, in <module>
    from grabber import urlgrab, urlopen, urlread
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 512, in <module>
    import pycurl
ImportError: No module named pycurl
Return code: 0
----------[ 10 Dec 2023 10:30:00 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_list.py available
Traceback (most recent call last):
  File "G:\UTIL\ANPM\scripts\yum_list.py", line 6, in <module>
    import yum
  File "G:/usr/lib/python2.7/site-packages/yum/__init__.py", line 52, in <module>
    import config
  File "G:/usr/lib/python2.7/site-packages/yum/config.py", line 30, in <module>
    from parser import ConfigPreProcessor, varReplace
  File "G:/usr/lib/python2.7/site-packages/yum/parser.py", line 4, in <module>
    import urlgrabber
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/__init__.py", line 55, in <module>
    from grabber import urlgrab, urlopen, urlread
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 512, in <module>
    import pycurl
ImportError: No module named pycurl
Return code: 0
----------[ 10 Dec 2023 10:39:59 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_populate.py
Traceback (most recent call last):
  File "G:\UTIL\ANPM\scripts\yum_populate.py", line 6, in <module>
    import yum
  File "G:/usr/lib/python2.7/site-packages/yum/__init__.py", line 52, in <module>
    import config
  File "G:/usr/lib/python2.7/site-packages/yum/config.py", line 30, in <module>
    from parser import ConfigPreProcessor, varReplace
  File "G:/usr/lib/python2.7/site-packages/yum/parser.py", line 4, in <module>
    import urlgrabber
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/__init__.py", line 55, in <module>
    from grabber import urlgrab, urlopen, urlread
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 512, in <module>
    import pycurl
ImportError: No module named pycurl
Return code: 0
----------[ 10 Dec 2023 10:40:01 ]----------
Executing: @python2.7 G:\UTIL\ANPM\scripts\yum_list.py
Traceback (most recent call last):
  File "G:\UTIL\ANPM\scripts\yum_list.py", line 6, in <module>
    import yum
  File "G:/usr/lib/python2.7/site-packages/yum/__init__.py", line 52, in <module>
    import config
  File "G:/usr/lib/python2.7/site-packages/yum/config.py", line 30, in <module>
    from parser import ConfigPreProcessor, varReplace
  File "G:/usr/lib/python2.7/site-packages/yum/parser.py", line 4, in <module>
    import urlgrabber
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/__init__.py", line 55, in <module>
    from grabber import urlgrab, urlopen, urlread
  File "G:/usr/lib/python2.7/site-packages/urlgrabber/grabber.py", line 512, in <module>
    import pycurl
ImportError: No module named pycurl
Return code: 0

Sure enough, ANPM is no longer able to pull anything up, reports a pipe error, although from CLI I get the following:

Code: [Select]
[G:\]yum list python* |less
There was a problem importing one of the Python modules
required to run yum. The error leading to this problem was:

   No module named pycurl

Please install a package which provides this module, or
verify that the module is installed correctly.

It's possible that the above module doesn't match the
current version of Python, which is:
2.7.18 (default, Dec 27 2021, 15:11:56)
[GCC 9.2.0 20190812 (OS/2 RPM build 9.2.0-5.oc00)]

If you cannot solve this problem yourself, please go to
the yum faq at:
  http://yum.baseurl.org/wiki/Faq

So it would appear that installing python3-pycurl obsoleted python-pycurl (which I would have expected is the correct thing to do), but for some reason ANPM continues to see python 2.7.18 as the version it is executing.

From any CLI when checking for the installed Python3 version I get the following:

Code: [Select]
[G:\]python --version
Python 3.9.17

...so clearly I'm running Python3, but ANPM is still using 2.7.18, is that by design?

Either way, any ideas how I can get back to a working YUM/RPM/ANPM config?...and what (if anything) do I do about the remaining pythonx RPM packages (do I upgrade, or leave alone)?

OH, BTW: a system reboot was executed to rule out any other impacts, results are the same

8
Programming / Resources, dialogs, etc - what tools for what jobs?
« on: November 18, 2023, 04:41:34 pm »
PUMonitor enhancement project follow-up...

The original author provided a text RC file that defines all the resources the utility uses. No problem there, the Resource Compiler get that into a RES file, which is then ultimately attached to the EXE itself. My makefile handles that. Keep in mind that he developed this in Borland C++, so I am assuming he used the Borland Resource Workshop.

Alright...so now I need to change the Settings dialogs and as best as I know (which granted is very little on this topic ;)) I was expecting to use the Dialog Editor to actually visually modify/add the right layouts, etc. The Dialog Editor however (which is the Toolkit one) only wants to open a RES file, which while managable (b/c I have that as an output of the Resource Compiler run) will not afterwards reflect the changes in the source RC file. In other words: it looks like I can make changes to the RES itself, but once I do how do I get these into the underlying RC itself?

I understand why the ability to just change the RES is desirable: after all, if I want to adjust just a resource it is awfully nice to do so w/o having to recompile all the sources, etc.

OK, so back to my task, my thinking here is: if my makefile is looking to always compile the RC, clearly when I modify just the RES I will always overwrite those changes with the output of compiled RC, no?

Further on I understand that the Dialog Editor should allow me to create the DLG file, with the option to create the compiled version, that being the RES extension. OK, but trying to do this with my Dialog Editor only allows me to open a RES file, and attempting to save it simply points back to the same RES and optional H files.

Alright...so digging through my OS/2 DEV library I see the mention of Dialog Editor ONLY creating DLG text files when one starts with a NEW dialog...hmm??? So is the expectation really that all further changes are to be done by hand (if I want to reflect the actual changes in the underlying DLG source), or through a direct GUI manipulation of the previously generated RES file (using Dialog Editor)?

That just seems weird...I should be able to visually modify a dialog and upon saving it update the source definition file itself, be it RC or DLG (depending of course on what particular resource I am modifying).

So what am I missing here?

FYI - attempting to open the RC file itself in Borland Resource Workshop produces an error:

"Compiling MENU: ID_MENU"

Code: [Select]
Error
G:\code\source\os2\pumonitor\src\source\pumon2.rc 20:Expecting END

The Help feedback states:

Quote
Resource Workshop encountered an unexpected token when searching for the END keyword. This error is frequently caused by a typo in an identifier name.

Which I think is strange given that this RC file compiles successfully into RES, which itself is attached into the EXE and by all accounts that's working quite fine.

Here is the matching part of the RC itself:

Code: [Select]
...
MENU ID_MENU
{
    MENUITEM "~About"    , ID_MENU_ABOUT, MIS_TEXT
    MENUITEM "~Settings" , ID_MENU_SET  , MIS_TEXT | MIS_SUBMENU
    {
        MENUITEM "~General"       , ID_MENU_SET_0, MIS_TEXT
        MENUITEM "~CPU Meter"     , ID_MENU_SET_1, MIS_TEXT
        MENUITEM "~Memory Meter"  , ID_MENU_SET_2, MIS_TEXT
        MENUITEM "~TCP/IP Traffic", ID_MENU_SET_3, MIS_TEXT
        MENUITEM "M~ail Checker 1", ID_MENU_SET_4, MIS_TEXT
        MENUITEM "M~ail Checker 2", ID_MENU_SET_5, MIS_TEXT
        MENUITEM "M~ail Checker 3", ID_MENU_SET_6, MIS_TEXT
        MENUITEM "M~ail Checker 4", ID_MENU_SET_7, MIS_TEXT
        MENUITEM "M~ail Checker 5", ID_MENU_SET_8, MIS_TEXT
        MENUITEM "C~onnectivity"  , ID_MENU_SET_9, MIS_TEXT
    }
    MENUITEM ""            ,            -1, MIS_SEPARATOR
    MENUITEM "Read ~Mail  ", ID_MENU_MAIL , MIS_TEXT
    MENUITEM ""            ,            -1, MIS_SEPARATOR
    MENUITEM "~Close"      , ID_MENU_CLOSE, MIS_TEXT
}
...

9
Applications / NewView - control over NEW window placement?
« on: October 15, 2023, 01:47:53 am »
Is there any sort of parameter/setting that defines where each NEW NewView window is to be placed on screen?

I ask b/c in my setup (dual-monitor & 12 virtual desktops) every time I invoke NewView it pops up right next to the previous instantiation, which most of the time puts it in another window and normally in a different virtual desktop altogether. So I then chase it down and re-position, etc, etc.

OK, so having said that, I did see the following in the app help:

Quote
/pos:<left>,<bottom>,<width>,<height>

Set the main program window to the given position and size

...and while that allows me to position & size a NEW window in specific ways, as soon as I open a NEW window (w/o first closing the already opened one) that NEW window gets created right over the previous one, although safely offset by a few pixels.

Needless to say, that control doesn't help as I'm back to "square one".

10
Programming / makefile interpretation - help needed
« on: October 15, 2023, 01:20:08 am »
LOL...so this is part of my on-going attempt to add shared memory monitor to the PUMonitor utility.

Alright...PUMon relies on Borland's BMAKE for makefile handling, so I figured I would take a stab at converting that to NMAKE32 instead so I can use my VAC++ 3.6.5. Heck, I started this a looonnnnggg time ago (see https://www.os2world.com/forum/index.php/topic,2646.msg29061.html#msg29061) and now that I've made the memory watch code changes I really needed to commit and get that previous attempt to produce results!!!

Ha...but OK, I am basing this work on the original makefile and in the TARGET section:

Code: [Select]
...
# Targets
all :  pumon2.exe

COMMON.LIB : $(OBJS)
@cd .\obj
-@del COMMON.LIB >nul 2>nul
@$(LIBRARIAN) COMMON.LIB @..\library.rsp;
@cd ..

pumon2.exe : COMMON.LIB pumon2.obj pumon2.res
@cd .\obj
$(CC) @&&|
pumon2.obj COMMON.LIB   ..\source\si2.lib ..\source\win32k.lib so32dll.lib tcp32dll.lib pumon2.def
|
@$(RC) pumon2.res pumon2.exe
@cd ..
...

there I find the following snippet which I'm thrown off by:

Code: [Select]
$(CC) @&&|
pumon2.obj COMMON.LIB   ..\source\si2.lib ..\source\win32k.lib so32dll.lib tcp32dll.lib pumon2.def
|

I need help understanding this.

'CC' macro expands to => CC=icc -O+ -Oc+ -Ss+ -G5 -Q+ -Gm+ -I..\include -B"/ST:327680 /NOE /E:2" -B"/PMTYPE:PM"

Seems simple at first: the compiler is called, and given the placement of that command (PUMON2.EXE target) it appears that this is the FINAL call to link everything together.

OK, but that "@&&" string right after it implies a CLI conditional execute call that will only execute the stuff following "|" if the CC call is successful, but the "|" (pipe)??? what is that about (what sort of CC output am I expecting to pipe into the next section???)...and if CC will execute as-is, what the heck is it processing anyways given that I do not see anything telling it to pick up a dependent, nor to create a target.

Clearly I am missing something here and having spent a couple of hours on this tonight I'm stuck...

11
Programming / shared memory value - Odin win32k or DosQuerySysInfo???
« on: September 26, 2023, 10:08:32 pm »
I'm making some adjustments to the PUMonitor utility to show the largest available shared memory area (low shared memory I believe) alongside the current 'available memory' estimate.

Specifically, the PUMonitor utility relies on win32k.h definitions and library calls:

Code: [Select]
/* $Id: win32k.h,v 1.11 2001/03/15 20:03:10 bird Exp $
 *
 * Top level make file for the Win32k library.
 * Contains library and 32-bit IOCtl definition.
 *
 * Copyright (c) 2000 knut st. osmundsen (knut.stange.osmundsen@pmsc.no)
...

That library has a K32SYSTEMMEMINFO record which appears to already collect the shared memory information:

Code: [Select]
...
    /* Virtual Memory manager info. */
    ULONG       ulAddressLimit;         /* VM: Current user virtual address limit - use this for high arena check. (VirtualAddressLimit / 0x20000000) */
    ULONG       ulVMArenaPrivMax;       /* VM: Current highest address in the private arena. (vmRecalcShrBound()) */
    ULONG       ulVMArenaSharedMin;     /* VM: Current lowest address in the shared arena. (ahvmShr) */
    ULONG       ulVMArenaSharedMax;     /* VM: Current highest address in the shared arena. (ahvmShr) */
    ULONG       ulVMArenaSystemMin;     /* VM: Current lowest address in the system arena. (ahvmhSys) */
    ULONG       ulVMArenaSystemMax;     /* VM: Current highest address in the system arena. (ahvmhSys) */
    ULONG       ulVMArenaHighPrivMax;   /* VM: Current highest address in the high private arena - aurora/smp only. (vmRecalcShrBound) */
    ULONG       ulVMArenaHighSharedMin; /* VM: Current lowest address in the high shared arena - aurora/smp only. (ahvmhShr) */
    ULONG       ulVMArenaHighSharedMax; /* VM: Current highest address in the high shared arena - aurora/smp only. (ahvmhShr) */
...

Just looking at that single header file I see the following functions being called out:

Code: [Select]
/*******************************************************************************
*   External Functions                                                         *
*******************************************************************************/
/* Win32k APIs */
APIRET APIENTRY  libWin32kInit(void);
APIRET APIENTRY  libWin32kTerm(void);
BOOL   APIENTRY  libWin32kInstalled(void);
APIRET APIENTRY  libWin32kQueryOptionsStatus(PK32OPTIONS pOptions, PK32STATUS pStatus);
APIRET APIENTRY  libWin32kSetOptions(PK32OPTIONS pOptions);

/* "Extra OS2 APIs" */
APIRET APIENTRY  DosAllocMemEx(PPVOID ppv, ULONG cb, ULONG flag);
APIRET APIENTRY  W32kQueryOTEs(HMODULE hMTE, PQOTEBUFFER pQOte, ULONG cbQOte);
APIRET APIENTRY  W32kQuerySystemMemInfo(PK32SYSTEMMEMINFO pMemInfo);
APIRET APIENTRY  W32kProcessReadWrite(PID pid, ULONG cb, PVOID pvSource, PVOID pvTarget, BOOL fRead);
APIRET APIENTRY  W32kHandleSystemEvent(ULONG ulEvent, HEV hev, BOOL fHandle);

/* Helper function */
USHORT APIENTRY  libHelperGetCS(void);
...

In particular PUMonitor uses the W32kQuerySystemMemInfo function to retrieve the existing physical available memory information (cbPhysAvail), and it would seem the following would provide what I'm looking for:

ULONG       ulVMArenaSharedMin;     /* VM: Current lowest address in the shared arena. (ahvmShr) */
ULONG       ulVMArenaSharedMax;     /* VM: Current highest address in the shared arena. (ahvmShr) */

However...I haven't been able to find any references and DEV explanations for these, so I'm curious if anyone has used these?

The DosQuerySysInfo is a known way to get this, but obviously I'd rather not re-invent the wheel if I can use the existing approach.

As always, appreciate the feedback!

12
Applications / ANPM - libc upgrade error...?
« on: May 06, 2023, 04:08:29 pm »
Just spotted that libc has been updated, so I figured I'd give this a go.

Firing up ANPM went just fine, but attempting to update that RPM consistently results in the following error (see attachment).

Went as far as to re-boot, still the same result...curious if anyone is seeing this as well?

Running ANPM in DEBUG mode produces the following:

Code: [Select]
...
[RunYum] Starting execution thread for command: yum_update_dep.py libc
[RunYum]   -> Thread 10 started successfully.
[PyDone] Thread for "yum_update_dep.py libc" completed with status 0.
[PyDone] Processing exit logic for "YUM_UPDATE_DEP.PY".
[GetScalingFactor] Using font size 10 (scaling factor 1)
[DLLCheck] Checking 9 DLLs for conflicts
[CheckDllConflict] - LIBCN0.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBCN0.DLL
[CheckDllConflict] - LIBC06.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC06.DLL
[CheckDllConflict] - LIBC061.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC061.DLL
[CheckDllConflict] - LIBC062.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC062.DLL
[CheckDllConflict] - LIBC063.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC063.DLL
[CheckDllConflict] - LIBC064.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC064.DLL
[CheckDllConflict] - LIBC065.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC065.DLL
[CheckDllConflict] - LIBC066.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBC066.DLL
[CheckDllConflict] - LIBCN0.DLL
[CheckDllConflict]   --> G:\USR\LIB\LIBCN0.DLL
[GetScalingFactor] Using font size 10 (scaling factor 1)
...

...so perhaps there is some sort of a scaling logic issue here? I do recall this is one of the changes that Alex rolled out in the last ANPM release.

BTW: nothing in POPUPLOG.OS2 and no TRP files.

13
Off Topic discussions / Car rides etc, was Re: Qt6 Development
« on: May 06, 2023, 03:41:59 pm »
I know I've been a bit quiet the last couple of weeks, I've needed some time away from Qt6 as it was starting to frustrate me...
I'm sorry Paul...but priorities are priorities, and I'm expecting a new build every two, at worst three days!!! :o ......NOT 

Look, everyone needs some "soul time", so don't short-change yourself on yours.

Alright...so how about that NEW ride of yours? If I may ask, what did you end up getting?

I'm a car guy, meaning, hobby wise I build V8 motors, occasionally drag race, but the intended use is mostly for the street. My current engine build started way back in 2021 and it's been dragging on for a little too long now, although I can see the light at the end of the tunnel now!

14
Programming / DLL names, and re-direction?
« on: April 22, 2023, 09:38:22 pm »
As Paul has been building the QT stuff he noted the OS/2 DLL name limitations.

This morning I was reading a security paper on Google One VPN and DLL redirection was highlighted as one of the findings (LOW impact).

Anyways, this remark was applicable to the Win binaries, but it did have a link to a MSDN article (https://learn.microsoft.com/en-us/windows/win32/dlls/dynamic-link-library-redirection), so off I went reading wondering how Gates&Co solved this issue.

So while the redirection issue and the Win functionality to implement such a thing does not solve our problem, that made me think: so why not construct our very own re-direct DLL to help us deal with the existing limitations?

Basically a wrapper DLL.

Would it not be feasible to maintain a system-wide manifest that lists all installed DLLs, and for those that need to be longer than the 8 chars limitation we simply provide a virtual DLL name that the wrapper maps to and passes that onto the standard OS/2 DLL loader?

...or am I misunderstanding the nature of the OS/2 limitiation?

15
Applications / XWP - Create New => popup sort?
« on: April 15, 2023, 11:45:09 pm »
Hi Everyone!

Can anyone tell me how XWP sorts the objects in the 'Create new => folder' pop-up menu selection?

This functionality allows you to define what types of objects you'd like to have easy access to creating. Simply RMB click anywhere and select from that pop-up menu.

I recently sorted through my Lotus 1-2-3 and AOO entries and added the AOO spreadsheet option (see attached image for 'Spreadsheet - Excel'.

However, for the life of me (and I'm guessing this may be ridiculously simple) I cannot figure out how to arrange the folder objects so that my pop-up menu is better organized.

My goal is to list the two 'Spreadsheet' options at the bottom of that menu.

Thanks!

Pages: [1] 2 3 ... 12