Just a cast and an assert.
* either. Discounting the shortest possible variable name of
* length 1, the equal sign and trailing NUL this hence leaves
* ARG_MAX-3 as longest possible variable value. */
- if (strlen(e) > (size_t) sysconf(_SC_ARG_MAX) - 3)
+ if (strlen(e) > sc_arg_max() - 3)
return false;
return true;
* be > ARG_MAX, hence the individual variable assignments
* cannot be either, but let's leave room for one trailing NUL
* byte. */
- if (strlen(e) > (size_t) sysconf(_SC_ARG_MAX) - 1)
+ if (strlen(e) > sc_arg_max() - 1)
return false;
return true;
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
+#include <unistd.h>
#include "macro.h"
#include "string.h"
+static inline size_t sc_arg_max(void) {
+ long l = sysconf(_SC_ARG_MAX);
+ assert(l > 0);
+ return (size_t) l;
+}
+
bool env_name_is_valid(const char *e);
bool env_value_is_valid(const char *e);
bool env_assignment_is_valid(const char *e);
#include "alloc-util.h"
#include "architecture.h"
#include "escape.h"
+#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
if (r < 0)
return r;
- if (max_length == 0) {
+ if (max_length == 0)
/* This is supposed to be a safety guard against runaway command lines. */
- long l = sysconf(_SC_ARG_MAX);
- assert(l > 0);
- max_length = l;
- }
+ max_length = sc_arg_max();
if (max_length == 1) {
#include "alloc-util.h"
#include "audit-util.h"
#include "cgroup-util.h"
+#include "env-util.h"
#include "fd-util.h"
#include "fileio.h"
#include "fs-util.h"
if (r < 0) {
log_warning_errno(r, "Cannot query /proc/meminfo for MemTotal: %m");
cached = CACHE_MAX_FALLBACK;
- } else {
+ } else
/* Cache entries are usually a few kB, but the process cmdline is controlled by the
* user and can be up to _SC_ARG_MAX, usually 2MB. Let's say that approximately up to
* 1/8th of memory may be used by the cache.
*
* In the common case, this formula gives 64 cache entries for each GB of RAM.
*/
- long l = sysconf(_SC_ARG_MAX);
- assert(l > 0);
-
- cached = CLAMP(mem_total / 8 / (uint64_t) l, CACHE_MAX_MIN, CACHE_MAX_MAX);
- }
+ cached = CLAMP(mem_total / 8 / sc_arg_max(), CACHE_MAX_MIN, CACHE_MAX_MAX);
}
return cached;