okan
1e51789cc3
Switch ssh menu to search_match_text; like group/window/cmd menus, use only a
...
substring match. The previous matching is only intended for the exec menus.
2016-12-01 18:44:09 +00:00
okan
5a905031f4
Change 'menu-window' to display all windows; then add 'menu-window-hidden' for
...
the previous behaviour of 'menu-window'. 'menu-window' becomes the default
binding; use 'bind-mouse "1" menu-window-hidden' to restore old behaviour for
those who prefer.
OK sthen@ (long long time ago on a different version)
2016-12-01 18:17:52 +00:00
okan
58b2eb545f
Normalize bind function names, based on a few categories: window, group, menu
...
and pointer.
Replace 'bind' and 'mousebind' options with 'bind-key' and 'bind-mouse',
respectively, replace special 'unmap' keyword with 'unbind-key' and
'unbind-mouse', and additionally allow unbinding all with 'all' keyword.
2016-12-01 17:17:27 +00:00
czarkoff
516257834c
Preserve aspect ratio of camera image in Xv output.
...
OK jca@
2016-11-26 11:49:15 +00:00
okan
5c15bd8953
Use an additional check with lstat(2) when d_type is unknown.
...
from James McDonald via portable.
2016-11-15 18:43:09 +00:00
okan
c33b352974
revert previous; upcoming changes will hopefully deal with these more
...
naturally.
2016-11-15 00:22:02 +00:00
okan
706ee11014
Add a wrapper based upon xevent handlers around client move/resize for key and
...
mouse bindings.
2016-11-15 00:07:03 +00:00
okan
d18539103e
Define callbacks, then default bindings.
2016-11-14 21:25:59 +00:00
okan
a78a724512
Reorganize for upcoming changes.
2016-11-14 19:56:05 +00:00
okan
f5f2a608ff
Remove the (8) default bindings for pointer move since they conflict with
...
default bindings for emacs, which wins; the feature remains and can be bound to
whatever users wish with cwmrc(5).
from mpi@
2016-11-14 13:52:33 +00:00
matthieu
8dbc1a3a1a
regen
2016-11-11 16:22:02 +00:00
matthieu
a525e5d33f
SU is not needed without xdmcp support
2016-11-11 16:21:50 +00:00
matthieu
da72443d3d
regen
2016-11-11 15:58:47 +00:00
matthieu
12abc80a8d
Xsession cleanup:
...
- remove mkstemp conditional it's always there
- remove USE_XPM conditional
- remove SCO and Unixware bits that survived so far
2016-11-11 15:58:35 +00:00
matthieu
d5119169fa
regen
2016-11-11 15:25:34 +00:00
matthieu
0a3295ecef
Keep only on Xservers file.
...
The Xservers.fs file makes no sense in xenodm.
2016-11-11 15:25:17 +00:00
czarkoff
7b0a63b485
Fix X11 property retrieval code
...
Just stop when reaching the end of property list instead of reading
forever past its end.
Issue was introduced in my previous commit and reported by deraadt@
2016-11-08 13:22:55 +00:00
matthieu
cf398e78cf
More unused code, when xdm-authorization is not used.
2016-11-06 14:00:37 +00:00
matthieu
4289726dad
Remove a number of unused prototypes
2016-11-06 13:48:48 +00:00
matthieu
4ebe34eee0
The SIGFUNC type definition is unused now
2016-11-06 13:40:33 +00:00
matthieu
eb59d7033d
Good bye <setjmp.h> and associated definitions.
2016-11-06 13:37:28 +00:00
matthieu
4a2df54825
Use explicit_bzero(). With BSD auth these data have already been
...
wiped when we reach those points but just in case.
2016-11-06 13:30:15 +00:00
matthieu
cdddca9b4f
Rework the Xservers parsing code to correctly reject
...
non local display types.
2016-11-06 12:56:30 +00:00
matthieu
abef35bfcd
GreetUser() doen't need to return the X display pointer.
2016-11-06 12:41:24 +00:00
matthieu
6ba2835960
Check strdup return value
2016-11-06 10:21:29 +00:00
matthieu
5f2163b431
Remove useless endpwent() calls
2016-11-06 10:17:38 +00:00
matthieu
cc885e4714
Remove a server reset that was there for compatilibity with "old" servers
2016-11-06 10:07:40 +00:00
matthieu
5b32b31147
Remove display class from Xserver examples.
...
They are of little interest in xenodm.
2016-11-06 09:45:34 +00:00
matthieu
036f33eb6e
Remove special handling of Kerberos auth that will never happen.
2016-11-06 09:32:15 +00:00
matthieu
33973f7a55
Add an autologin mode to xenodm.
2016-11-06 09:26:47 +00:00
matthieu
7cd788e5d9
Remove more mentions of remote and foreign X servers
2016-11-06 09:24:27 +00:00
matthieu
1a2fd595f2
Remove the displayType member of struct display.
...
xenodm only manages Local Permanent FromFile X servers.
No need to keep the checks for that.
For now the Xservers file keeps the location field, but ignores its
2016-11-06 09:17:47 +00:00
matthieu
a0d355a5ad
Update to xterm 327
2016-11-03 14:25:06 +00:00
tb
ba05d4bd05
Add a "flock" promise. If there are no local cache files for the user,
...
fontconfig may try to lock the shared cache files using fcntl(2).
ok matthieu
2016-10-26 20:08:14 +00:00
matthieu
57e2d19903
With the disabling of Tektronics emulation, the pledge(2) promises could
...
be reduced a bit: no more "cpath" should be required.
from Sebastien Marie. Thanks.
Reviewed by schwarze@, "put it in" deraadt@
2016-10-26 19:21:51 +00:00
okan
943e3e7534
Make it clear these are flags.
2016-10-24 20:44:08 +00:00
matthieu
d4d4ffd9f5
Stop providing the uxterm and koi8rxterm shell scripts.
...
Requested by schwarze@ agreed naddy@
2016-10-24 19:55:37 +00:00
matthieu
6e898074f3
Disable Tektronics 4014 emulation. ok natano@, naddy@, schwarze@
2016-10-24 19:31:35 +00:00
okan
b490184555
Remove duplicate check that strsubmatch() already does; while here, fix a
...
comment.
2016-10-24 18:57:12 +00:00
okan
6eaec44a4a
Sprinkle __func__ in appropriate error messages.
2016-10-24 17:39:38 +00:00
okan
66d541d7ee
Get rid of 'matchname'; it's too surprising to have the menu change during
...
client search as different potential str matches are cycled through. If there's
interest, the only string that doesn't exist in the listing is the window's
class - that can be added of course, but it makes the line too long imho.
2016-10-24 17:16:23 +00:00
matthieu
3f1971c798
Don't try to find an interpreter to execute the Xsession file if
...
it's not executable.
2016-10-23 21:17:24 +00:00
matthieu
4112b87687
Mark some functions as __dead
2016-10-23 21:13:03 +00:00
matthieu
95d0cac0e3
endpwent() is not needed after getpwnam()
2016-10-23 20:38:36 +00:00
matthieu
7161f1690d
Augment the chances LogOutOfMem() works in out-of-memory conditions.
...
All instances are called with only one constant string so no need for
varargs dance.
2016-10-23 20:35:44 +00:00
matthieu
d3274fece8
Oops a typo crept in
2016-10-23 18:41:39 +00:00
matthieu
6cbc37ff18
Use xenodm where applicable in comments
2016-10-23 12:50:49 +00:00
matthieu
6098c35094
Use explicit_bzero() to wipe the password
2016-10-23 11:31:42 +00:00
matthieu
1dfe3ca042
greet->password is wiped after handling it to auth_setdata().
...
No need to wipe again it later.
2016-10-23 11:30:03 +00:00
matthieu
186b6af863
Remove out-dated comment
2016-10-23 10:44:52 +00:00
matthieu
f24b0a9c84
remove unused parameter passwd in StartClient().
2016-10-23 10:37:23 +00:00
matthieu
25805cbb51
Generate autotools build system
2016-10-23 08:32:59 +00:00
matthieu
5394d9088b
Add xenodm a stripped down xdm (X Display Manager) for OpenBSD.
2016-10-23 08:30:37 +00:00
okan
9cb17b0e3b
clean up search_match_client(); no behaviour change
2016-10-22 19:16:43 +00:00
czarkoff
b679f961ab
add NetWM-compliant fullscreen support
...
OK jung@
2016-10-21 09:48:48 +00:00
okan
4811ec0433
Refactor callbacks to take a void * so as to not try and generalize into
...
client_ctx in keypress and buttonpress event handlers; pass appropriate *ctx's
based on context.
While here, limit some globals, replace defines with appropriate variables and
fix some naming.
2016-10-18 17:03:30 +00:00
okan
9a3b6b7fd4
remove another unused proto
2016-10-12 16:11:15 +00:00
matthieu
fd18c20e72
regen
2016-10-11 22:14:30 +00:00
matthieu
d9fc70eb7c
Remove the global 'make includes' step from 'make build'.
...
This is no longer needed and gets in the way of tightening
permission used during build. ok and suggestions natano@
2016-10-10 13:34:43 +00:00
okan
a1a192d258
Rename 2 kbfunc to match closer to what they do
2016-10-06 14:53:52 +00:00
okan
a53fef7b1e
Add an argument to the callbacks to pass the xevent context, button or
...
key press. This allows to remove a few hacks to duplicate functions only
for behaviour changes; now differing behaviours are pushed down to the
callback. Also will allow for previously unavailable actions to be bind-able
down the road.
2016-10-06 14:41:19 +00:00
okan
4e1d180946
Check the ptr bounds in the new client during cycling, since not all
...
actions do ptrsave, such as restoring client geometry; adapted from a
diff by Vadim Vygonets.
2016-10-06 14:30:05 +00:00
okan
4a70ba0924
More accurate to say 'toggle', rather than 'select', for group[n]/nogroup.
2016-10-05 14:01:23 +00:00
okan
62af7b9761
Add CM-a for 'nogroup' (CM-0 stays for now); update manpage to reflect.
2016-10-05 13:35:17 +00:00
okan
ddbad284c7
Stash wmname into conf.
2016-10-05 13:10:59 +00:00
okan
c42b7d0a28
When removing xrandr regions, ensure clients are within the bounds of
...
the screen; adapted from an ancient diff from Sviatoslav Chagaev. Things
in this area will likely change, but put this in so it works now and
serves as a reminder.
2016-10-04 20:15:55 +00:00
okan
a7e1d9acfc
Calculate client nameqlen in client_setname(), the only place it's
...
needed/used.
2016-10-04 15:52:32 +00:00
okan
d592dd99f7
Turn CALMWM_NGROUPS define into variable, ngroups.
2016-10-04 15:18:20 +00:00
okan
cdbe6c3bc9
Start simplifying menu code; and in turn, remove a cursor no longer
...
needed.
2016-10-03 18:43:49 +00:00
okan
6889482fc7
Defaults are split between defines and conf_init(); normalize these, as
...
well as give 'sticky' groups its own variable.
2016-10-03 14:42:34 +00:00
okan
dcdbf54e85
For both kb and mouse move, it is possible to grab a client and move it
...
completely off the screen/region; instead, if the pointer is outside of
the client bounds, warp the pointer to the closest edge before moving.
2016-10-03 13:52:17 +00:00
okan
3881d6ad85
client_ptrwarp should not deal with unhiding or raising clients (non ptr
...
requests); most callers do this already - deal with the few that do not.
client_ptrwarp becomes a simple wrapper (setpos) but it will be expanded.
2016-10-03 13:41:30 +00:00
tb
c5b53bf9ac
Explicitly set the owner of the shell scripts in etc/X11/xdm and of the
...
chooser and xdm binaries to BINOWN:BINGRP. Needed for noperm release.
ok mathieu
2016-10-02 09:12:46 +00:00
okan
679d00b4fa
remove unused proto
2016-09-30 21:44:51 +00:00
okan
5a1d71fd93
Set the initial ptr position during client init, instead of waiting
...
until (maybe) a ptrwarp call. Likewise, explicitly ensure an inbounds ptr
position (same as initial) when saving.
2016-09-30 20:55:54 +00:00
okan
54cccf114b
Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests;
...
the one line wrappers provided no value and limited altering calls where
needed; additionally, most of them had but one caller.
2016-09-30 18:28:06 +00:00
okan
e49083a483
Replace mousefunc_sweep_draw() with a generic menu_windraw() using va
...
lists; use it appropriately for both window dimension and position in
the respective mousefunc calls.
ok bryent@
2016-09-30 15:12:19 +00:00
okan
e30959f62f
Switch to XWindowEvent() pulling out events that match the mask *and*
...
window.
2016-09-30 15:05:02 +00:00
okan
035ba40ddc
no need to unmap menu window again
2016-09-29 00:30:40 +00:00
okan
1b369f6063
Mechanical change: move screen menu bits to their own struct.
2016-09-29 00:21:55 +00:00
okan
b46a5b0b56
Inline Xft draw and extents wrappers; too much abstraction.
2016-09-28 17:06:33 +00:00
okan
7c35826ca9
Do not call sweep_draw() too early: don't yet have w/h dimensions; plus
...
we will get a MotionNotify event right away anyway, setting required
parameters.
2016-09-28 15:54:54 +00:00
okan
374d386034
Continue merging kb and mouse functions: fold
...
mousefunc_menu_{client,cmd,group} into the respective
kbfunc_menu_{client,cmd,group} functions; simply pass a flag down from
config denoting mouse action behaviour.
2016-09-22 14:36:03 +00:00
okan
c1ac946076
Allow ctrl-[ for abort (esc); from Benjamin Scher Purcell
2016-09-20 19:58:54 +00:00
okan
489250a384
de-static client_inbound()
2016-09-20 19:11:19 +00:00
okan
47ecd2dcf9
remove debug that accidentally snuck in
2016-09-20 18:23:12 +00:00
okan
d9f512008b
Get rid of curcc, instead cycle through the queue; removes the need for
...
client_none().
2016-09-20 18:21:32 +00:00
jca
cdd4bf21cb
Make video -i work ootb.
...
video(1) uses mmap and ioctls by default, those ioctls only work on
video(4) devices. If -i is passed, use read(2) instead of the mmap(2)
routines, instead of requiring the user to pass also pass the -g flag.
2016-09-16 20:29:03 +00:00
okan
9b943acf32
During init, query screen for _NET_ACTIVE_WINDOW and set that client as
...
active; while we already look at what's under the pointer, use this
information first, then look under the pointer (saving that round-trip).
This restores the active state to a client after restart even if the
pointer is not above it (and of course the pointer is not above another
client).
2016-09-16 14:32:02 +00:00
okan
faafc6dd35
Some clients fail to setup hints at all, so initalize for them; fallout
...
from r1.218 switching to malloc - clearly missed this case.
found the hard way by brynet@
2016-09-14 21:00:24 +00:00
okan
b0ab7f2e87
Fix-up a few simple uses of client_current(): check CLIENT_ACTIVE flag
...
instead of relying on curcc.
2016-09-14 19:45:33 +00:00
matthieu
fe5fda4a31
Make shure that all autotools generated install commands specify a
...
user and a group.
2016-09-14 08:31:47 +00:00
okan
237d1b1cf5
init label
2016-09-13 17:42:58 +00:00
okan
6937dedc0d
Limit mouse resize to hints within the client; matches kbd resize
...
behaviour.
2016-09-13 13:42:28 +00:00
okan
14d946c938
Switch to just malloc since we need initialize most everything anyway.
2016-09-12 13:48:41 +00:00
okan
310ca33ad8
change 'sticky' to 'stick' to toggle client stickiness (seems the
...
default binding worked for everyone for a long time!); conflict with
group sticky found by Ali Farzanrad - thanks!
2016-09-12 13:47:00 +00:00
matthieu
c7371fb865
Fix installation modes and ownership.
2016-09-11 19:22:56 +00:00
matthieu
b4ced79982
Remove zaurus specific default VT configuration (it had only 2 VTs)
2016-09-04 19:13:17 +00:00
okan
79f19b14ff
Simplify group_holds_only_hidden(); from Vadim Vygonets.
2016-09-02 16:07:11 +00:00
okan
6c5b694356
Simplify toggling flags; from Vadim Vygonets.
2016-09-02 15:08:44 +00:00
okan
b9b225cb85
Do not draw borders on ignored clients when returning from fullscreen;
...
from Vadim Vygonets.
2016-09-01 18:38:52 +00:00
okan
0aaaf77e6b
Remove redundant minimum client size adjustment (minw and minh are
...
always positive since r1.214); from Vadim Vygonets.
2016-09-01 18:34:04 +00:00
okan
156bfda805
Enable the use of numpad Enter key on menus; from Henrique N. Lengler.
...
ok beck phessler
2016-08-28 15:23:24 +00:00
matthieu
29156ec96c
add a column to previous commit for consitency.
2016-08-13 09:59:48 +00:00
matthieu
c4dbc0305f
conf_screen: report the fontname that can't be opened in case of failure.
...
ok dcoppa@
2016-08-13 09:58:37 +00:00
matthieu
12142429a1
Update to xterm-325. Testing by krw@, shadchin@ and naddy@. Thanks
2016-08-07 21:27:36 +00:00
matthieu
5762926f26
Update to xinput 1.6.2
2016-08-06 11:15:29 +00:00
matthieu
9a285a7c62
Update to xkbcomp 1.3.1
2016-08-06 11:08:41 +00:00
matthieu
7da41a3963
Version-less logos for 6.0 and above
2016-07-11 20:02:02 +00:00
mglocker
13dfb063f0
Comparing maximum frame buffer size after VIDIOC_DQBUF ioctl against
...
'buf.bytesused' instead of 'buf.length' makes more sense.
From Patrick Keshish
2016-06-06 19:31:22 +00:00
mglocker
58b259de1a
To match the encoding type, compare against 'pixelformat' instead of
...
'description' which could contain any value. Fixes VIDIOC_ENUM_FMT ioctl
for utvfu(4).
Spotted by Patrick Keshish.
ok mpi
2016-06-06 11:55:38 +00:00
mglocker
75f41efb37
Add 'q' option to just display the device properties and quit.
...
Tested and ok czarkoff
2016-06-04 07:44:32 +00:00
tb
9df5e43bd2
mmap(2) failure is indicated by MAP_FAILED, not NULL.
...
ok mglocker
2016-06-02 08:53:32 +00:00
mglocker
9d46737716
Just try to unmap a buffer when something has been mapped before.
...
ok semarie tb
2016-06-02 07:47:25 +00:00
tb
7d6f19381b
Guard against using tp_start uninitialized in case no frame was
...
grabbed in verbose mode.
ok mglocker
2016-05-31 08:45:14 +00:00
mglocker
b1a7299baa
Add mmap(2) support for frame grabbing and make it default over read(2).
...
The introduced '-g' option still allows to fallback to read(2).
With input from tb, jmc, and Patrick Keshishian.
ok tb
2016-05-31 06:47:12 +00:00
matthieu
699cb20b48
remove xsystrace (already un-linked from builds)
2016-05-07 19:15:07 +00:00
okan
dbd50a50c6
If supplied format to menuq_add() is NULL, fill text with an empty
...
string; found by Christian Neukirchen.
2016-04-28 16:28:38 +00:00
matthieu
189ba43a02
un-hook xsystrace(1). ok beck@
2016-04-25 19:25:31 +00:00
schwarze
ba95469f30
Use UTF-8 mode by default because it is safer and more useful
...
even for people always running with a C/POSIX locale(1).
OK matthieu@ naddy@ martijn@
2016-03-08 17:26:30 +00:00
matthieu
eebec65122
Update to xrandr 1.5.0
2016-03-06 13:45:29 +00:00
matthieu
f3b2934829
puffy 5.9
2016-01-16 10:47:56 +00:00
naddy
bb06250523
On BSD, switching off ICANON does not disable LNEXT (^V) processing.
...
We explicitly need to unset IEXTEN. ok matthieu@
2016-01-13 21:17:02 +00:00
matthieu
17886faaf7
Update to xterm 322. Tested by shadchin@ and jsg@. Thanks.
2016-01-13 20:40:08 +00:00
matthieu
0a1bf36b6d
missed one conversion to arc4random().
2016-01-05 10:33:13 +00:00
matthieu
11beb40bcd
Remove unused file.
2015-12-24 15:52:42 +00:00
semarie
d0c47f20a0
add pledge promise "exec" for few cases in xterm
...
in particular if the user use `exec-formatted' or `exec-selectable' actions in key binding.
problem reported by jirib at devio dot us.
2015-11-25 08:56:50 +00:00
okan
eaf23378dd
pledge fvwm and FvwmPager (since it's started by default); committing to
...
solicit further feedback and testing.
ok matthieu and encouragement from deraadt
2015-11-18 17:41:42 +00:00
okan
402ba9437e
Fix a typo from r1.201; fixes window_grouptoggle binding.
2015-11-17 15:19:19 +00:00
okan
448a04ca44
If a client does not set increment values, use 'moveamount' as a way to
...
scale keyboard based resizes; extend kbfunc_amount().
Behaviour noted by, tested by, and ok sthen@
2015-11-17 14:32:38 +00:00
okan
5dd7f2f304
Inline the only use of mousefunc_sweep_calc.
2015-11-17 14:31:28 +00:00
matthieu
78005e8a07
pledge xconsole(1).
2015-11-14 17:13:21 +00:00
matthieu
5092a69bf9
Don't try to revoque privileges if priv_init is called without
...
privileges. The parent process will be used for operations
that can't be pledged.
2015-11-14 17:12:14 +00:00
okan
403542f5b2
more client vs screen context differences
2015-11-12 21:28:03 +00:00
okan
6e55f9d89b
If a client sets hints, honor them for kb resize requests, just like we
...
do for mouse based resize requests.
Based on a patch from Vadim Vygonets.
2015-11-12 18:33:30 +00:00
okan
db0907a53d
Move kb pointer movement out of the kbfunc_client_moveresize since it's
...
got nothing to do with clients, thus doing flags work causes lots of
waste and almost useless jumpy pointer movements; while here, split out
move and resize since they share almost no code, just like mouse client
move/resize; factor out amount and factor. Still wonder why this is
here, but it works now.
2015-11-12 18:26:41 +00:00
okan
4db32a8463
pledge "stdio rpath proc exec" cwm before main event loop, after
...
init/setup - mostly for menu building.
ok semarie@ (another cwm user)
2015-11-12 17:56:54 +00:00
matthieu
27549fce93
Reduce gcc warnings. No functional changes.
2015-11-11 21:20:12 +00:00
matthieu
300ba5c057
use HAVE_ instead of HAS_ macros for consistency.
2015-11-11 21:18:12 +00:00
matthieu
f08e325b48
regen
2015-11-11 21:12:43 +00:00
matthieu
eedb4e77fa
pledge for xclock. okan@ got to the same patch. I added autoconf goo
...
to make it possible to send it upstreams. ok deraadt@
2015-11-11 21:12:19 +00:00
okan
a7bbf5197e
Partial revert of replacing screen_area() with region_find(); until a
...
fix for a regression is found; this bug has been around for a long time
it seems, but this change exposed it. Likely need to track clients in to
and out of regions.
2015-11-11 14:22:01 +00:00
deraadt
3ab7d7d094
avoid using err(), use xtermWarning() instead; ok semarie
2015-11-11 07:09:50 +00:00
okan
72507096a1
Use position on root to figure out region.
2015-11-10 22:06:57 +00:00
okan
0abb5fd0f1
Start cleaning up name vs function differences; replace magic numbers.
2015-11-10 20:05:33 +00:00
okan
3fd7c4d329
Clean up unused defines.
2015-11-09 20:15:23 +00:00
okan
ffc7945b8d
Extend region to include both view and work areas; switch to
...
region_find() which no longer needs to recalculate gap each time
a client (or menu) is created or altered. If no RandR, fall back
to display dimensions while building regions instead of during
execution.
2015-11-09 20:03:29 +00:00
matthieu
370b4f5d5a
Fix use afer free in free_window_list().
...
bug report by Gerrit Meyerheim, patch by Serguey Parkhomovsky on bugs@
Thanks to both.
2015-11-08 13:47:41 +00:00
semarie
9199950164
add pledge to xterm
...
the pledge call is done just before the main loop, so initialisation
is almost done.
- stdio: for all communication on opened fds (read/write/select/recvmsg/...)
- rpath: for X11 error ("X Error of failed request: ...") which read
at least /usr/X11R6/share/X11/XErrorDB
- wpath : on exit, for opening WR_ONLY "/var/run/utmp"
- cpath : for Tek emulation window (xterm -t)
- id : on exit, for calling setegid()
- proc: on exit, for calling kill()
- tty: on exit, for calling tcflush()
"it is time" deraadt@
2015-11-07 08:10:24 +00:00
matthieu
33d107bfaf
Don't automatically launch dbus as part of the default user sessions.
...
requested by deraadt@ no objection ajacoutot@
2015-10-17 08:25:11 +00:00