I've submitted a new patch for fixing the openSUSE init script which replaces the previous one. This patch has the following advantages:
a) The PID of the Jenkins process gets written into the pid file (finally!).
b) The Jenkins process is started in a new session, thus properly releasing it from its parent.
c) A lot of cruft, which tried to work around the peculiar PID-handling (mis-)behaviour of startproc, is removed.
d) The stop action reverts to using killproc, which waits for the stopped process to die.
e) Due to d), the restart action does not need an extra pause, as suggested by the old patch.
The patch has been tested on openSUSE 11.1 and 11.3, and works fine.
However, it relies on semi-undocumented behaviour of startproc. Quoting from the man page:
The option -v makes startproc print out verbose diagnostics.
What actually gets printed is just the PID of the process that was started, and the patch makes use of this fact to fix the problem of the empty PID file. Meaning, this fix might not work forever, but on current versions of openSUSE (11.x) it's fine.