On 12/13/23 09:24, Carsten Grzemba via openindiana-discuss wrote:
I don't know when I have seen the last time the printer applet in mate-panel.

On my attempts to revive the applet I stumbled on the abstract socket stuff in 
the Python code of applet.py

If i try to start

/usr/share/system-config-printer/applet.py I get the exception

Process already running (2:No such file or directory). Exiting.


For the used syntax

sock.bind("\0printer-applet-lock-user-" + getpass.getuser())
the error is 2:No such file or directory, the "Process already running" notice 
is the interpretation of the exception handler

A sock.bind with an normal string works, but not the style with the leading \0. 
This is the syntax for abstract sockets on Linux.
I have no idea if abstract sockets would work on Illumos and Python. But how 
should work the printer applet on non Linux systems?


Linux unix(7) says:

>     The abstract socket namespace is a nonportable Linux extension.

It looks like there's support for this in the out-of-illumos-gate lx brand:

https://github.com/TritonDataCenter/illumos-joyent/blob/master/usr/src/uts/common/brand/lx/syscall/lx_socket.c#L390

but that's not handled in the native syscall.

But you can very much do in userspace what this does in the kernel: replace the NUL at the start of the pathname with the path to a sticky-bitted world-writable directory.

This appears to fix it for me:

--- applet.py~  Tue Mar 14 12:01:25 2023
+++ applet.py   Wed Dec 13 14:59:02 2023
@@ -464,7 +464,7 @@
     try:
         sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
         # Create an abstract socket, by prefixing it with null.
-        sock.bind("\0printer-applet-lock-user-" + getpass.getuser())
+        sock.bind("/tmp/printer-applet-lock-user-" + getpass.getuser())
     except socket.error as err:
         error_code = err.args[0]
         error_string = err.args[1]

but maybe /tmp isn't the best place..



_______________________________________________
openindiana-discuss mailing list
openindiana-discuss@openindiana.org
https://openindiana.org/mailman/listinfo/openindiana-discuss

Reply via email to