From: Evgeny Vereshchagin Date: Sat, 28 Nov 2015 16:49:13 +0000 (+0000) Subject: core: expose soft limits on the bus X-Git-Tag: v229.1~1^2~96 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;ds=sidebyside;h=754a768833613e94527ef4403e62858bce189db4;p=elogind.git core: expose soft limits on the bus This is a follow-up for https://github.com/elogind/elogind/pull/1994 See https://github.com/elogind/elogind/pull/1994#issuecomment-160087219 --- diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c index eee8fca14..4b0337b34 100644 --- a/src/shared/bus-util.c +++ b/src/shared/bus-util.c @@ -2380,23 +2380,28 @@ int bus_property_get_rlimit( struct rlimit *rl; uint64_t u; rlim_t x; + const char *is_soft; assert(bus); assert(reply); assert(userdata); + is_soft = endswith(property, "Soft"); rl = *(struct rlimit**) userdata; if (rl) - x = rl->rlim_max; + x = is_soft ? rl->rlim_cur : rl->rlim_max; else { struct rlimit buf = {}; int z; + const char *s; + + s = is_soft ? strndupa(property, is_soft - property) : property; - z = rlimit_from_string(strstr(property, "Limit")); + z = rlimit_from_string(strstr(s, "Limit")); assert(z >= 0); getrlimit(z, &buf); - x = buf.rlim_max; + x = is_soft ? buf.rlim_cur : buf.rlim_max; } /* rlim_t might have different sizes, let's map