From patchwork Tue May 23 19:29:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252808 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A785C7EE26 for ; Tue, 23 May 2023 19:30:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232824AbjEWTa0 (ORCPT ); Tue, 23 May 2023 15:30:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36460 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238112AbjEWTaU (ORCPT ); Tue, 23 May 2023 15:30:20 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 689B618D for ; Tue, 23 May 2023 12:29:54 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-56552a72cfbso1379947b3.3 for ; Tue, 23 May 2023 12:29:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870193; x=1687462193; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Pix5txEqGA/cjv47uoPcj2vDcSrGlRnMdSBFz/2e5Sk=; b=edS2GGE2wJrqto0rAJO9/w795h14TchCLepbumWiyUL32H8Wl6tyexjsmoCtaOji3p wPDw0wO7xq8At1kv2zUIXDxqPqcSe1nIcKRFPvER5WvP4MODSZVhTAGNE5pPdwAybuJO p9+37c4M+1dR1zt44W5fNMZ9qscyQnOkrrhgXSBVaGomwXQFzfumaeb53DDUvhSFhXaf uGgMlXU/AqcQf1VtlwkKTpplqToWKEiqHcfQ3jjVAX/j7np6+AVxLyFRFlO0jjN1XnXG jc/18SuRp1t7JayYOMByD9XPRrdjVmXhUR+PY4kvXSe/dc2xVBveWNnCKv8BONDQpuAy /Zuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870193; x=1687462193; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Pix5txEqGA/cjv47uoPcj2vDcSrGlRnMdSBFz/2e5Sk=; b=PIeyUBR2KfS1L6Te295FfEZaRm5FJOdw+Q+7mziiVwLdbuHzBGm46ETxZBELZY5uEA NMY0/ftzfVwW9Xq2xAYfkec/pSJ1mOithgVUclrWkVf9m33mNX+QKYf8WF1/kTYAUAEy 17Mc4Rm1bRIoOpWtgieXUm6EOhSZ7j/OM0CRJJ+rLh5CRhi2fk49ZEOVmHkGx0wq4tvL CPU1p/TdkaS8KqaUZCoruFIzbIhmQjFbVnnvxIvQ/z13tXRrtF/lhZXwwUFKm6Cx76vS AQzpxaLdmSHc37rLpUNW1ysgnrLGK0ppfSgfx0G3KaID4hVbuqRSrzGV60wh22xxNHui Dj6A== X-Gm-Message-State: AC+VfDxU3zfisEaz9aIr68Ephh7M0eDCyg8bIeRKKiEg62/EkyPCPgWY 6jgbEAvbx85B4BBgZejIzzymKpY4+s49kpHcawX9MSmaZtyChDmecQr9lucNDA3mRqS6+wgScN0 zz+pq2airgW+4wGz770eS/D3jWxJQe0dh2DbpojXIhmB2eDpyy7Mx5fCUrqp5aUNvOQ== X-Google-Smtp-Source: ACHHUZ4GPWG+Y4Yaa2oXc5abH75YYqDdIBBLiXsh6oMt+P56LbOe1FhsznADaEdlDdn1W0QoQidWyFDS8qPJKhg= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a81:ae09:0:b0:55a:8930:b13 with SMTP id m9-20020a81ae09000000b0055a89300b13mr9423076ywh.9.1684870193630; Tue, 23 May 2023 12:29:53 -0700 (PDT) Date: Tue, 23 May 2023 19:29:43 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-1-calvinwan@google.com> Subject: [PATCH v2 1/7] strbuf.h: move declarations for strbuf.c functions from git-compat-util.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org While functions like starts_with() probably should not belong in the boundaries of the strbuf library, this commit focuses on first splitting out headers from git-compat-util.h. Signed-off-by: Calvin Wan --- builtin/symbolic-ref.c | 1 + builtin/unpack-objects.c | 1 + git-compat-util.h | 32 -------------------------------- strbuf.h | 32 ++++++++++++++++++++++++++++++++ versioncmp.c | 1 + 5 files changed, 35 insertions(+), 32 deletions(-) diff --git a/builtin/symbolic-ref.c b/builtin/symbolic-ref.c index a61fa3c0f8..c9defe4d2e 100644 --- a/builtin/symbolic-ref.c +++ b/builtin/symbolic-ref.c @@ -3,6 +3,7 @@ #include "gettext.h" #include "refs.h" #include "parse-options.h" +#include "strbuf.h" static const char * const git_symbolic_ref_usage[] = { N_("git symbolic-ref [-m ] "), diff --git a/builtin/unpack-objects.c b/builtin/unpack-objects.c index b4b46ae729..0510e60e6e 100644 --- a/builtin/unpack-objects.c +++ b/builtin/unpack-objects.c @@ -12,6 +12,7 @@ #include "blob.h" #include "commit.h" #include "replace-object.h" +#include "strbuf.h" #include "tag.h" #include "tree.h" #include "tree-walk.h" diff --git a/git-compat-util.h b/git-compat-util.h index 1889da7986..fe9e86bad0 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -677,9 +677,6 @@ void set_warn_routine(report_fn routine); report_fn get_warn_routine(void); void set_die_is_recursing_routine(int (*routine)(void)); -int starts_with(const char *str, const char *prefix); -int istarts_with(const char *str, const char *prefix); - /* * If the string "str" begins with the string found in "prefix", return 1. * The "out" parameter is set to "str + strlen(prefix)" (i.e., to the point in @@ -708,29 +705,6 @@ static inline int skip_prefix(const char *str, const char *prefix, return 0; } -/* - * If the string "str" is the same as the string in "prefix", then the "arg" - * parameter is set to the "def" parameter and 1 is returned. - * If the string "str" begins with the string found in "prefix" and then a - * "=" sign, then the "arg" parameter is set to "str + strlen(prefix) + 1" - * (i.e., to the point in the string right after the prefix and the "=" sign), - * and 1 is returned. - * - * Otherwise, return 0 and leave "arg" untouched. - * - * When we accept both a "--key" and a "--key=" option, this function - * can be used instead of !strcmp(arg, "--key") and then - * skip_prefix(arg, "--key=", &arg) to parse such an option. - */ -int skip_to_optional_arg_default(const char *str, const char *prefix, - const char **arg, const char *def); - -static inline int skip_to_optional_arg(const char *str, const char *prefix, - const char **arg) -{ - return skip_to_optional_arg_default(str, prefix, arg, ""); -} - /* * Like skip_prefix, but promises never to read past "len" bytes of the input * buffer, and returns the remaining number of bytes in "out" via "outlen". @@ -775,12 +749,6 @@ static inline int strip_suffix(const char *str, const char *suffix, size_t *len) return strip_suffix_mem(str, len, suffix); } -static inline int ends_with(const char *str, const char *suffix) -{ - size_t len; - return strip_suffix(str, suffix, &len); -} - #define SWAP(a, b) do { \ void *_swap_a_ptr = &(a); \ void *_swap_b_ptr = &(b); \ diff --git a/strbuf.h b/strbuf.h index 8903195416..28b3038e83 100644 --- a/strbuf.h +++ b/strbuf.h @@ -698,4 +698,36 @@ char *xstrvfmt(const char *fmt, va_list ap); __attribute__((format (printf, 1, 2))) char *xstrfmt(const char *fmt, ...); +int starts_with(const char *str, const char *prefix); +int istarts_with(const char *str, const char *prefix); + +/* + * If the string "str" is the same as the string in "prefix", then the "arg" + * parameter is set to the "def" parameter and 1 is returned. + * If the string "str" begins with the string found in "prefix" and then a + * "=" sign, then the "arg" parameter is set to "str + strlen(prefix) + 1" + * (i.e., to the point in the string right after the prefix and the "=" sign), + * and 1 is returned. + * + * Otherwise, return 0 and leave "arg" untouched. + * + * When we accept both a "--key" and a "--key=" option, this function + * can be used instead of !strcmp(arg, "--key") and then + * skip_prefix(arg, "--key=", &arg) to parse such an option. + */ +int skip_to_optional_arg_default(const char *str, const char *prefix, + const char **arg, const char *def); + +static inline int skip_to_optional_arg(const char *str, const char *prefix, + const char **arg) +{ + return skip_to_optional_arg_default(str, prefix, arg, ""); +} + +static inline int ends_with(const char *str, const char *suffix) +{ + size_t len; + return strip_suffix(str, suffix, &len); +} + #endif /* STRBUF_H */ diff --git a/versioncmp.c b/versioncmp.c index 74cc7c43f0..45e676cbca 100644 --- a/versioncmp.c +++ b/versioncmp.c @@ -1,5 +1,6 @@ #include "git-compat-util.h" #include "config.h" +#include "strbuf.h" #include "string-list.h" #include "versioncmp.h" From patchwork Tue May 23 19:29:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252809 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id CAF61C7EE23 for ; Tue, 23 May 2023 19:30:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238333AbjEWTa1 (ORCPT ); Tue, 23 May 2023 15:30:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238301AbjEWTaV (ORCPT ); Tue, 23 May 2023 15:30:21 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07A1118F for ; Tue, 23 May 2023 12:29:56 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-56561689700so254557b3.2 for ; Tue, 23 May 2023 12:29:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870195; x=1687462195; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=04VFOfLRNd5vmWBRZYRtI+VXViPIpMDXz/zmRSB4+KI=; b=oETNQnBngy5KJ4lPEqvkpcCEDpghvmRPkEwPoAUBaGTaNTf5r299ega0ub+yFUZN7E PIG3EdkcTHwQqfX6JUFQ0IJgfjF3fVMn3DgEyNcGE9kDGktE7q9sK5buddoAZJ6iVNf3 Yyx0NBygXQ2QmcVYO0Xhjxxq5Qc2+U0Z9C5l/XVtCp5TWCsJV4U+/J3Z+xYiGSmsNdFw Kv4ISgbNa2RR0Lzg0bGsw4d4XPQT2RbEosdJ27M0Y8ctjMvlsEE+kNG3yMmU8YDPZbaA 7RvsSainR1F+hfJBF8QqiB+LcSp+Gf/XajesTJcWxoiRNIlWcrzTp9qL/Zlcmtuno2pQ spvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870195; x=1687462195; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=04VFOfLRNd5vmWBRZYRtI+VXViPIpMDXz/zmRSB4+KI=; b=OKFkZvBaSV0N4Ogy0Q+z+2ulfArBMOri76HR9pIc35PTFORZmF6390cqZoAO+d6LUC SdwkC0pzL5TQQnapiBNOQ/zAgb7DAb3zqK1Ri/ZV3TTynQ8wbmRoKV6Rvo7vJDD5NqKJ FnqrtDqCrfTAZmTqXCoqRqsufOfOXxxUHDFn/mWezLG+fDJ0ZDeH9l/RVBUNYOYrxl86 2oSiKB7GvfWlu6pWLUUrL8cvO3hJtwBu37rUttmpJnLc8zcTfbLnKQiC2WiWz8VBF1wR i0I4L3obEMwlf9/0ieS81tmv2ckVTNBa94CkpYDZHAhiKGJ2bZ2AX/Yj7K76+hBizVZM Qckg== X-Gm-Message-State: AC+VfDwHwiC6S2qbtI+WSb0ha+kqItFoRLq4UNWMDGJx59CctN/zxetf R/iX/FNqO9g8vd4+Ff4yQcnkjxekt8PdB4sOKO+pz8FfUB8QcXS3icMkvns+S3LqeR7SnNONbHL rP3p5myrNPFMggOd+l+qN1WAeN2HejAqYy8FS3pm0EI/7zkM0r906pyzKfvYu6tPmmw== X-Google-Smtp-Source: ACHHUZ7uX76j0FYroAfDHP7YNM7it9btCKhQ+qP/7H7t3bVsuSPkiprLcyQ1fA1GZ5fb3USwQIiDq6nCH3uVlfo= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a81:b717:0:b0:560:d237:43dc with SMTP id v23-20020a81b717000000b00560d23743dcmr9533409ywh.3.1684870195221; Tue, 23 May 2023 12:29:55 -0700 (PDT) Date: Tue, 23 May 2023 19:29:44 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-2-calvinwan@google.com> Subject: [PATCH v2 2/7] wrapper.h: move declarations for wrapper.c functions from git-compat-util.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since the functions in wrapper.c are widely used across the codebase, include it by default in git-compat-util.h. A future patch will remove now unnecessary inclusions of wrapper.h from other files. Signed-off-by: Calvin Wan --- git-compat-util.h | 112 +--------------------------------------------- wrapper.h | 111 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 111 deletions(-) diff --git a/git-compat-util.h b/git-compat-util.h index fe9e86bad0..f8e68baf29 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -625,7 +625,7 @@ static inline int git_has_dir_sep(const char *path) #include "compat/bswap.h" -struct strbuf; +#include "wrapper.h" /* General helper functions */ NORETURN void usage(const char *err); @@ -1045,36 +1045,6 @@ static inline int cast_size_t_to_int(size_t a) # define xalloca(size) (xmalloc(size)) # define xalloca_free(p) (free(p)) #endif -char *xstrdup(const char *str); -void *xmalloc(size_t size); -void *xmallocz(size_t size); -void *xmallocz_gently(size_t size); -void *xmemdupz(const void *data, size_t len); -char *xstrndup(const char *str, size_t len); -void *xrealloc(void *ptr, size_t size); -void *xcalloc(size_t nmemb, size_t size); -void xsetenv(const char *name, const char *value, int overwrite); -void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); -const char *mmap_os_err(void); -void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset); -int xopen(const char *path, int flags, ...); -ssize_t xread(int fd, void *buf, size_t len); -ssize_t xwrite(int fd, const void *buf, size_t len); -ssize_t xpread(int fd, void *buf, size_t len, off_t offset); -int xdup(int fd); -FILE *xfopen(const char *path, const char *mode); -FILE *xfdopen(int fd, const char *mode); -int xmkstemp(char *temp_filename); -int xmkstemp_mode(char *temp_filename, int mode); -char *xgetcwd(void); -FILE *fopen_for_writing(const char *path); -FILE *fopen_or_warn(const char *path, const char *mode); - -/* - * Like strncmp, but only return zero if s is NUL-terminated and exactly len - * characters long. If it is not, consider it greater than t. - */ -int xstrncmpz(const char *s, const char *t, size_t len); /* * FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note @@ -1176,15 +1146,10 @@ static inline size_t xsize_t(off_t len) return (size_t) len; } -__attribute__((format (printf, 3, 4))) -int xsnprintf(char *dst, size_t max, const char *fmt, ...); - #ifndef HOST_NAME_MAX #define HOST_NAME_MAX 256 #endif -int xgethostname(char *buf, size_t len); - /* in ctype.c, for kwset users */ extern const unsigned char tolower_trans_tbl[256]; @@ -1425,72 +1390,6 @@ void bug_fl(const char *file, int line, const char *fmt, ...); #endif #endif -enum fsync_action { - FSYNC_WRITEOUT_ONLY, - FSYNC_HARDWARE_FLUSH -}; - -/* - * Issues an fsync against the specified file according to the specified mode. - * - * FSYNC_WRITEOUT_ONLY attempts to use interfaces available on some operating - * systems to flush the OS cache without issuing a flush command to the storage - * controller. If those interfaces are unavailable, the function fails with - * ENOSYS. - * - * FSYNC_HARDWARE_FLUSH does an OS writeout and hardware flush to ensure that - * changes are durable. It is not expected to fail. - */ -int git_fsync(int fd, enum fsync_action action); - -/* - * Writes out trace statistics for fsync using the trace2 API. - */ -void trace_git_fsync_stats(void); - -/* - * Preserves errno, prints a message, but gives no warning for ENOENT. - * Returns 0 on success, which includes trying to unlink an object that does - * not exist. - */ -int unlink_or_warn(const char *path); - /* - * Tries to unlink file. Returns 0 if unlink succeeded - * or the file already didn't exist. Returns -1 and - * appends a message to err suitable for - * 'error("%s", err->buf)' on error. - */ -int unlink_or_msg(const char *file, struct strbuf *err); -/* - * Preserves errno, prints a message, but gives no warning for ENOENT. - * Returns 0 on success, which includes trying to remove a directory that does - * not exist. - */ -int rmdir_or_warn(const char *path); -/* - * Calls the correct function out of {unlink,rmdir}_or_warn based on - * the supplied file mode. - */ -int remove_or_warn(unsigned int mode, const char *path); - -/* - * Call access(2), but warn for any error except "missing file" - * (ENOENT or ENOTDIR). - */ -#define ACCESS_EACCES_OK (1U << 0) -int access_or_warn(const char *path, int mode, unsigned flag); -int access_or_die(const char *path, int mode, unsigned flag); - -/* Warn on an inaccessible file if errno indicates this is an error */ -int warn_on_fopen_errors(const char *path); - -/* - * Open with O_NOFOLLOW, or equivalent. Note that the fallback equivalent - * may be racy. Do not use this as protection against an attacker who can - * simultaneously create paths. - */ -int open_nofollow(const char *path, int flags); - #ifndef SHELL_PATH # define SHELL_PATH "/bin/sh" #endif @@ -1630,13 +1529,4 @@ static inline void *container_of_or_null_offset(void *ptr, size_t offset) ((uintptr_t)&(ptr)->member - (uintptr_t)(ptr)) #endif /* !__GNUC__ */ -void sleep_millisec(int millisec); - -/* - * Generate len bytes from the system cryptographically secure PRNG. - * Returns 0 on success and -1 on error, setting errno. The inability to - * satisfy the full request is an error. - */ -int csprng_bytes(void *buf, size_t len); - #endif diff --git a/wrapper.h b/wrapper.h index f0c7d0616d..c85b1328d1 100644 --- a/wrapper.h +++ b/wrapper.h @@ -1,6 +1,42 @@ #ifndef WRAPPER_H #define WRAPPER_H +char *xstrdup(const char *str); +void *xmalloc(size_t size); +void *xmallocz(size_t size); +void *xmallocz_gently(size_t size); +void *xmemdupz(const void *data, size_t len); +char *xstrndup(const char *str, size_t len); +void *xrealloc(void *ptr, size_t size); +void *xcalloc(size_t nmemb, size_t size); +void xsetenv(const char *name, const char *value, int overwrite); +void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); +const char *mmap_os_err(void); +void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset); +int xopen(const char *path, int flags, ...); +ssize_t xread(int fd, void *buf, size_t len); +ssize_t xwrite(int fd, const void *buf, size_t len); +ssize_t xpread(int fd, void *buf, size_t len, off_t offset); +int xdup(int fd); +FILE *xfopen(const char *path, const char *mode); +FILE *xfdopen(int fd, const char *mode); +int xmkstemp(char *temp_filename); +int xmkstemp_mode(char *temp_filename, int mode); +char *xgetcwd(void); +FILE *fopen_for_writing(const char *path); +FILE *fopen_or_warn(const char *path, const char *mode); + +/* + * Like strncmp, but only return zero if s is NUL-terminated and exactly len + * characters long. If it is not, consider it greater than t. + */ +int xstrncmpz(const char *s, const char *t, size_t len); + +__attribute__((format (printf, 3, 4))) +int xsnprintf(char *dst, size_t max, const char *fmt, ...); + +int xgethostname(char *buf, size_t len); + /* set default permissions by passing mode arguments to open(2) */ int git_mkstemps_mode(char *pattern, int suffix_len, int mode); int git_mkstemp_mode(char *pattern, int mode); @@ -33,4 +69,79 @@ void write_file(const char *path, const char *fmt, ...); /* Return 1 if the file is empty or does not exists, 0 otherwise. */ int is_empty_or_missing_file(const char *filename); +enum fsync_action { + FSYNC_WRITEOUT_ONLY, + FSYNC_HARDWARE_FLUSH +}; + +/* + * Issues an fsync against the specified file according to the specified mode. + * + * FSYNC_WRITEOUT_ONLY attempts to use interfaces available on some operating + * systems to flush the OS cache without issuing a flush command to the storage + * controller. If those interfaces are unavailable, the function fails with + * ENOSYS. + * + * FSYNC_HARDWARE_FLUSH does an OS writeout and hardware flush to ensure that + * changes are durable. It is not expected to fail. + */ +int git_fsync(int fd, enum fsync_action action); + +/* + * Writes out trace statistics for fsync using the trace2 API. + */ +void trace_git_fsync_stats(void); + +/* + * Preserves errno, prints a message, but gives no warning for ENOENT. + * Returns 0 on success, which includes trying to unlink an object that does + * not exist. + */ +int unlink_or_warn(const char *path); + /* + * Tries to unlink file. Returns 0 if unlink succeeded + * or the file already didn't exist. Returns -1 and + * appends a message to err suitable for + * 'error("%s", err->buf)' on error. + */ +int unlink_or_msg(const char *file, struct strbuf *err); +/* + * Preserves errno, prints a message, but gives no warning for ENOENT. + * Returns 0 on success, which includes trying to remove a directory that does + * not exist. + */ +int rmdir_or_warn(const char *path); +/* + * Calls the correct function out of {unlink,rmdir}_or_warn based on + * the supplied file mode. + */ +int remove_or_warn(unsigned int mode, const char *path); + +/* + * Call access(2), but warn for any error except "missing file" + * (ENOENT or ENOTDIR). + */ +#define ACCESS_EACCES_OK (1U << 0) +int access_or_warn(const char *path, int mode, unsigned flag); +int access_or_die(const char *path, int mode, unsigned flag); + +/* Warn on an inaccessible file if errno indicates this is an error */ +int warn_on_fopen_errors(const char *path); + +/* + * Open with O_NOFOLLOW, or equivalent. Note that the fallback equivalent + * may be racy. Do not use this as protection against an attacker who can + * simultaneously create paths. + */ +int open_nofollow(const char *path, int flags); + +void sleep_millisec(int millisec); + +/* + * Generate len bytes from the system cryptographically secure PRNG. + * Returns 0 on success and -1 on error, setting errno. The inability to + * satisfy the full request is an error. + */ +int csprng_bytes(void *buf, size_t len); + #endif /* WRAPPER_H */ From patchwork Tue May 23 19:29:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252810 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5F885C7EE26 for ; Tue, 23 May 2023 19:30:30 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238318AbjEWTa3 (ORCPT ); Tue, 23 May 2023 15:30:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36468 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238323AbjEWTaY (ORCPT ); Tue, 23 May 2023 15:30:24 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6DDA3126 for ; Tue, 23 May 2023 12:29:57 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-556011695d1so1439717b3.1 for ; Tue, 23 May 2023 12:29:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870196; x=1687462196; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Lt03LJsdP7nx9fgeMadivdqMRjcceTT443SeukE1cbo=; b=Tezr7XUDO9W6puqH3irL37ubyeZzeJcsFQ97HvlbfutXY4osxKZ9r+HTKGS0lD8S77 HrO+PsvSKO8RtoP3/SGrUs4152zglNJ5BS1RW3q3KBL9lhX0i1N7idgx8WHt0uJM1M4i dtNNiUo65jFjfR6shm5UmDj0VsdJ9rkXJlHxWjdH7HRnqreDyT2sI5XKvAeUmCwlwhn/ nWDshvf4QA/p5XE2nRUWbwkBuK1x6MdjhpniSGY2oaZD4Eq0ErM1mNxZ4kLM4Ug1/njM PhUvkx9EMNrs6RiMN2HPrkHtB/Q4kPNTx314ko3PgaVvM6cQEU1jXa5Vrw4QD3CfdS3C xguw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870196; x=1687462196; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Lt03LJsdP7nx9fgeMadivdqMRjcceTT443SeukE1cbo=; b=PXootaxbY1gVBjvMVGto6W7HRxq8OnlzBawub3Y/yC5KSo/VSoKxBCtveBRgPBPTU5 rtzanDtcyeAvqrUh414W0pQJ+lU1qV/kLC2x12BAo1ddxwe5taIOuPMyrqjKLvUiGQox tctNmLg5mfKk2mrXN3UzmxDSZZbn2kpRCY9O1rtctZ6PtbJJUgz6vMxc7G/Mb2b+EijO 3q8R+gDPxEWmJb8EKnE/SSI0y5vQAi9UZw1NYIGYxGHEH6k4TOJYKbCKdDxNHvYBEl10 Q+Nnv8m3p1klbTAMxwPH1T4TibZyePknpMAEj7pUjjbG+1XugKnhiitk/RbndjHHaQ0M ZfPg== X-Gm-Message-State: AC+VfDx57DgJIS8lwiI4s0EsNiW4PE5zlAifqivmWlzCt0YSFDIaDKoY YshAsx0iKm+aHRpRx24mgoYea69nnzoNAaw02HAoAGQ9SElZfox4UJSUQF0xCYl809zbG9SOCZy OsnHeqWTdiOfxep5pmaPjbU7RFEqQb2vYb3ElgDDC98T0D+dO7IExb7NVisccvHSP8w== X-Google-Smtp-Source: ACHHUZ42Lu2EewKXdR5Vu3Bt3lq/JOlz2WI9UvLyki4D5vux8D5Rl2wjPfQB6nQ5pgZRsHp+XgTOW2iZD//WH74= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a81:ae5b:0:b0:552:abfa:1e77 with SMTP id g27-20020a81ae5b000000b00552abfa1e77mr8695917ywk.5.1684870196590; Tue, 23 May 2023 12:29:56 -0700 (PDT) Date: Tue, 23 May 2023 19:29:45 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-3-calvinwan@google.com> Subject: [PATCH v2 3/7] sane-ctype.h: move sane-ctype macros from git-compat-util.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Splitting these macros from git-compat-util.h cleans up the file and allows future third-party sources to not use these overrides if they do not wish to. Signed-off-by: Calvin Wan --- git-compat-util.h | 65 +------------------------------------------- sane-ctype.h | 69 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 64 deletions(-) create mode 100644 sane-ctype.h diff --git a/git-compat-util.h b/git-compat-util.h index f8e68baf29..9d3c21acbb 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -1150,70 +1150,7 @@ static inline size_t xsize_t(off_t len) #define HOST_NAME_MAX 256 #endif -/* in ctype.c, for kwset users */ -extern const unsigned char tolower_trans_tbl[256]; - -/* Sane ctype - no locale, and works with signed chars */ -#undef isascii -#undef isspace -#undef isdigit -#undef isalpha -#undef isalnum -#undef isprint -#undef islower -#undef isupper -#undef tolower -#undef toupper -#undef iscntrl -#undef ispunct -#undef isxdigit - -extern const unsigned char sane_ctype[256]; -extern const signed char hexval_table[256]; -#define GIT_SPACE 0x01 -#define GIT_DIGIT 0x02 -#define GIT_ALPHA 0x04 -#define GIT_GLOB_SPECIAL 0x08 -#define GIT_REGEX_SPECIAL 0x10 -#define GIT_PATHSPEC_MAGIC 0x20 -#define GIT_CNTRL 0x40 -#define GIT_PUNCT 0x80 -#define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0) -#define isascii(x) (((x) & ~0x7f) == 0) -#define isspace(x) sane_istest(x,GIT_SPACE) -#define isdigit(x) sane_istest(x,GIT_DIGIT) -#define isalpha(x) sane_istest(x,GIT_ALPHA) -#define isalnum(x) sane_istest(x,GIT_ALPHA | GIT_DIGIT) -#define isprint(x) ((x) >= 0x20 && (x) <= 0x7e) -#define islower(x) sane_iscase(x, 1) -#define isupper(x) sane_iscase(x, 0) -#define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL) -#define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL) -#define iscntrl(x) (sane_istest(x,GIT_CNTRL)) -#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \ - GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC) -#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1) -#define tolower(x) sane_case((unsigned char)(x), 0x20) -#define toupper(x) sane_case((unsigned char)(x), 0) -#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC) - -static inline int sane_case(int x, int high) -{ - if (sane_istest(x, GIT_ALPHA)) - x = (x & ~0x20) | high; - return x; -} - -static inline int sane_iscase(int x, int is_lower) -{ - if (!sane_istest(x, GIT_ALPHA)) - return 0; - - if (is_lower) - return (x & 0x20) != 0; - else - return (x & 0x20) == 0; -} +#include "sane-ctype.h" /* * Like skip_prefix, but compare case-insensitively. Note that the comparison diff --git a/sane-ctype.h b/sane-ctype.h new file mode 100644 index 0000000000..df06bcbe14 --- /dev/null +++ b/sane-ctype.h @@ -0,0 +1,69 @@ +#ifndef SANE_CTYPE_H +#define SANE_CTYPE_H + +/* in ctype.c, for kwset users */ +extern const unsigned char tolower_trans_tbl[256]; + +/* Sane ctype - no locale, and works with signed chars */ +#undef isascii +#undef isspace +#undef isdigit +#undef isalpha +#undef isalnum +#undef isprint +#undef islower +#undef isupper +#undef tolower +#undef toupper +#undef iscntrl +#undef ispunct +#undef isxdigit + +extern const unsigned char sane_ctype[256]; +extern const signed char hexval_table[256]; +#define GIT_SPACE 0x01 +#define GIT_DIGIT 0x02 +#define GIT_ALPHA 0x04 +#define GIT_GLOB_SPECIAL 0x08 +#define GIT_REGEX_SPECIAL 0x10 +#define GIT_PATHSPEC_MAGIC 0x20 +#define GIT_CNTRL 0x40 +#define GIT_PUNCT 0x80 +#define sane_istest(x,mask) ((sane_ctype[(unsigned char)(x)] & (mask)) != 0) +#define isascii(x) (((x) & ~0x7f) == 0) +#define isspace(x) sane_istest(x,GIT_SPACE) +#define isdigit(x) sane_istest(x,GIT_DIGIT) +#define isalpha(x) sane_istest(x,GIT_ALPHA) +#define isalnum(x) sane_istest(x,GIT_ALPHA | GIT_DIGIT) +#define isprint(x) ((x) >= 0x20 && (x) <= 0x7e) +#define islower(x) sane_iscase(x, 1) +#define isupper(x) sane_iscase(x, 0) +#define is_glob_special(x) sane_istest(x,GIT_GLOB_SPECIAL) +#define is_regex_special(x) sane_istest(x,GIT_GLOB_SPECIAL | GIT_REGEX_SPECIAL) +#define iscntrl(x) (sane_istest(x,GIT_CNTRL)) +#define ispunct(x) sane_istest(x, GIT_PUNCT | GIT_REGEX_SPECIAL | \ + GIT_GLOB_SPECIAL | GIT_PATHSPEC_MAGIC) +#define isxdigit(x) (hexval_table[(unsigned char)(x)] != -1) +#define tolower(x) sane_case((unsigned char)(x), 0x20) +#define toupper(x) sane_case((unsigned char)(x), 0) +#define is_pathspec_magic(x) sane_istest(x,GIT_PATHSPEC_MAGIC) + +static inline int sane_case(int x, int high) +{ + if (sane_istest(x, GIT_ALPHA)) + x = (x & ~0x20) | high; + return x; +} + +static inline int sane_iscase(int x, int is_lower) +{ + if (!sane_istest(x, GIT_ALPHA)) + return 0; + + if (is_lower) + return (x & 0x20) != 0; + else + return (x & 0x20) == 0; +} + +#endif From patchwork Tue May 23 19:29:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252812 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1D5F3C7EE23 for ; Tue, 23 May 2023 19:30:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238340AbjEWTag (ORCPT ); Tue, 23 May 2023 15:30:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36474 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238317AbjEWTaZ (ORCPT ); Tue, 23 May 2023 15:30:25 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ED392E4B for ; Tue, 23 May 2023 12:29:58 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id 3f1490d57ef6-ba8338f2103so164154276.1 for ; Tue, 23 May 2023 12:29:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870198; x=1687462198; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=nZmYPx+hNZF6hMw7QkbNn9tzMfh0FkGsupjfclJD9KE=; b=z1OkahkSsZyibRkDtKkkS/ceaSDEj7vWh3NEmQ41WhlX7WJxsjq8MIBQRxV/9EoMI0 nqqXgs/mNxFrTpC9BxTYUyU11epkE6q5sVkpchCIpw8xg0YwvviDCCcjSjSsBw7zoDCD UKJAh2HkbAD/h55+AjW1kXWohwEmyq7Q17X/S6FcL/clA6o7dhr99+ze/2rOTY1CJAU4 73rPuVZRCRw6p+lIy5vHKBCL6mhoRSNWWOW5aMRgu5HLQZcANDTWuH1/WlR4+Fpx9Ohy vArzjVBNR+Pr0teV/LC0aFkIK5OPKC+5DSf9IA+EnLNM2cZNGOfKlVfuLwp9hfTqf2Yr zEZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870198; x=1687462198; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nZmYPx+hNZF6hMw7QkbNn9tzMfh0FkGsupjfclJD9KE=; b=Q2W0GLee/eWsNexK8tGq0cbUHofdrNG+17kr0/DuwKRW2WluGEUoANnwgoyUXFf5NI pfKPR15iFt2L8MUrimE34xkc4mSfDutniKYRgr7Mkwll50/PTyb7CgMRoIkPsFE3EgDq pptrCv9rfwWpCEr9gHYtanFw44fklvZC/KH5Jf2HCQSWX5lqpCjS36MWMPbfyV2yAeWf u/Veby3tKzpPoVSWPfdq8nQwjyxpobA0MoKkhoaYd1qlzPpqcm2zetD1LmC6s68RFUDr AWemXOQnb9Cc/z8p3LhsYqnu3JKfe4nCFYtVEwz3KNTRtZT44jP0W8pCO9aQLwzFrXne N1UQ== X-Gm-Message-State: AC+VfDysgDLM07O/2on5WlQ17VRmKOO6mngKCM8kXS3omzeXaxdZJMc2 ddP9Y17o9G4+m/ApqWVxJuEmOC0sobfXLUhSmSDvgX5SquHBDu1IQs9CV9VWcD3D6nLXWGyzlTs 6F29SeaVPXPQ2YP8Pw9cZK34css5qACtYZfb3piUes2ePcttAwTRiGu84d62EsS4Hig== X-Google-Smtp-Source: ACHHUZ7gcnfVKIFjo3RdytTp/lnkLy8R9QaFd84Pn+fq40AnkmokSiaPzOjo+pqgRUe6fOIGDpdx5uclLQ88Y+w= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a25:ac20:0:b0:ba8:91c0:3c50 with SMTP id w32-20020a25ac20000000b00ba891c03c50mr6522488ybi.7.1684870198107; Tue, 23 May 2023 12:29:58 -0700 (PDT) Date: Tue, 23 May 2023 19:29:46 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-4-calvinwan@google.com> Subject: [PATCH v2 4/7] common.h: move non-compat specific macros and functions from git-compat-util.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org git-compat-util.h has grown to a large and difficult to read file partly because its set of functionality is overloaded. Besides being a compatibility file that ensures Git's operation across different operating systems, it has also become a dumping ground for commonly used macros and static inline functions. This commit separates out macros and static inline functions that are compatible across operating systems into common.h. common.h is reincluded back into git-compat-util.h so that other files do not also have to include it. The eventual goal is for common.h to be separated out into more reasonable boundaries, but for now this should be a good first step towards that goal. Signed-off-by: Calvin Wan --- common.h | 410 ++++++++++++++++++++++++++++++++++++++++++++++ git-compat-util.h | 402 +-------------------------------------------- 2 files changed, 412 insertions(+), 400 deletions(-) create mode 100644 common.h diff --git a/common.h b/common.h new file mode 100644 index 0000000000..0f164c1071 --- /dev/null +++ b/common.h @@ -0,0 +1,410 @@ +#ifndef COMMON_H +#define COMMON_H + +#include "git-compat-util.h" +#include "wrapper.h" + +/* + * ARRAY_SIZE - get the number of elements in a visible array + * @x: the array whose size you want. + * + * This does not work on pointers, or arrays declared as [], or + * function parameters. With correct compiler support, such usage + * will cause a build error (see the build_assert_or_zero macro). + */ +#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]) + BARF_UNLESS_AN_ARRAY(x)) + +#define bitsizeof(x) (CHAR_BIT * sizeof(x)) + +#define maximum_signed_value_of_type(a) \ + (INTMAX_MAX >> (bitsizeof(intmax_t) - bitsizeof(a))) + +#define maximum_unsigned_value_of_type(a) \ + (UINTMAX_MAX >> (bitsizeof(uintmax_t) - bitsizeof(a))) + +/* + * Signed integer overflow is undefined in C, so here's a helper macro + * to detect if the sum of two integers will overflow. + * + * Requires: a >= 0, typeof(a) equals typeof(b) + */ +#define signed_add_overflows(a, b) \ + ((b) > maximum_signed_value_of_type(a) - (a)) + +#define unsigned_add_overflows(a, b) \ + ((b) > maximum_unsigned_value_of_type(a) - (a)) + +/* + * Returns true if the multiplication of "a" and "b" will + * overflow. The types of "a" and "b" must match and must be unsigned. + * Note that this macro evaluates "a" twice! + */ +#define unsigned_mult_overflows(a, b) \ + ((a) && (b) > maximum_unsigned_value_of_type(a) / (a)) + +/* + * Returns true if the left shift of "a" by "shift" bits will + * overflow. The type of "a" must be unsigned. + */ +#define unsigned_left_shift_overflows(a, shift) \ + ((shift) < bitsizeof(a) && \ + (a) > maximum_unsigned_value_of_type(a) >> (shift)) + +#define MSB(x, bits) ((x) & TYPEOF(x)(~0ULL << (bitsizeof(x) - (bits)))) +#define HAS_MULTI_BITS(i) ((i) & ((i) - 1)) /* checks if an integer has more than 1 bit set */ + +#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) + +/* Approximation of the length of the decimal representation of this type. */ +#define decimal_length(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1) + +/* + * If the string "str" begins with the string found in "prefix", return 1. + * The "out" parameter is set to "str + strlen(prefix)" (i.e., to the point in + * the string right after the prefix). + * + * Otherwise, return 0 and leave "out" untouched. + * + * Examples: + * + * [extract branch name, fail if not a branch] + * if (!skip_prefix(ref, "refs/heads/", &branch) + * return -1; + * + * [skip prefix if present, otherwise use whole string] + * skip_prefix(name, "refs/heads/", &name); + */ +static inline int skip_prefix(const char *str, const char *prefix, + const char **out) +{ + do { + if (!*prefix) { + *out = str; + return 1; + } + } while (*str++ == *prefix++); + return 0; +} + +/* + * Like skip_prefix, but promises never to read past "len" bytes of the input + * buffer, and returns the remaining number of bytes in "out" via "outlen". + */ +static inline int skip_prefix_mem(const char *buf, size_t len, + const char *prefix, + const char **out, size_t *outlen) +{ + size_t prefix_len = strlen(prefix); + if (prefix_len <= len && !memcmp(buf, prefix, prefix_len)) { + *out = buf + prefix_len; + *outlen = len - prefix_len; + return 1; + } + return 0; +} + +/* + * If buf ends with suffix, return 1 and subtract the length of the suffix + * from *len. Otherwise, return 0 and leave *len untouched. + */ +static inline int strip_suffix_mem(const char *buf, size_t *len, + const char *suffix) +{ + size_t suflen = strlen(suffix); + if (*len < suflen || memcmp(buf + (*len - suflen), suffix, suflen)) + return 0; + *len -= suflen; + return 1; +} + +/* + * If str ends with suffix, return 1 and set *len to the size of the string + * without the suffix. Otherwise, return 0 and set *len to the size of the + * string. + * + * Note that we do _not_ NUL-terminate str to the new length. + */ +static inline int strip_suffix(const char *str, const char *suffix, size_t *len) +{ + *len = strlen(str); + return strip_suffix_mem(str, len, suffix); +} + +#define SWAP(a, b) do { \ + void *_swap_a_ptr = &(a); \ + void *_swap_b_ptr = &(b); \ + unsigned char _swap_buffer[sizeof(a)]; \ + memcpy(_swap_buffer, _swap_a_ptr, sizeof(a)); \ + memcpy(_swap_a_ptr, _swap_b_ptr, sizeof(a) + \ + BUILD_ASSERT_OR_ZERO(sizeof(a) == sizeof(b))); \ + memcpy(_swap_b_ptr, _swap_buffer, sizeof(a)); \ +} while (0) + +static inline size_t st_add(size_t a, size_t b) +{ + if (unsigned_add_overflows(a, b)) + die("size_t overflow: %"PRIuMAX" + %"PRIuMAX, + (uintmax_t)a, (uintmax_t)b); + return a + b; +} +#define st_add3(a,b,c) st_add(st_add((a),(b)),(c)) +#define st_add4(a,b,c,d) st_add(st_add3((a),(b),(c)),(d)) + +static inline size_t st_mult(size_t a, size_t b) +{ + if (unsigned_mult_overflows(a, b)) + die("size_t overflow: %"PRIuMAX" * %"PRIuMAX, + (uintmax_t)a, (uintmax_t)b); + return a * b; +} + +static inline size_t st_sub(size_t a, size_t b) +{ + if (a < b) + die("size_t underflow: %"PRIuMAX" - %"PRIuMAX, + (uintmax_t)a, (uintmax_t)b); + return a - b; +} + +static inline size_t st_left_shift(size_t a, unsigned shift) +{ + if (unsigned_left_shift_overflows(a, shift)) + die("size_t overflow: %"PRIuMAX" << %u", + (uintmax_t)a, shift); + return a << shift; +} + +static inline unsigned long cast_size_t_to_ulong(size_t a) +{ + if (a != (unsigned long)a) + die("object too large to read on this platform: %" + PRIuMAX" is cut off to %lu", + (uintmax_t)a, (unsigned long)a); + return (unsigned long)a; +} + +static inline int cast_size_t_to_int(size_t a) +{ + if (a > INT_MAX) + die("number too large to represent as int on this platform: %"PRIuMAX, + (uintmax_t)a); + return (int)a; +} + + +/* + * FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note + * that ptr is used twice, so don't pass e.g. ptr++. + */ +#define FREE_AND_NULL(p) do { free(p); (p) = NULL; } while (0) + +#define ALLOC_ARRAY(x, alloc) (x) = xmalloc(st_mult(sizeof(*(x)), (alloc))) +#define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x))) +#define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), st_mult(sizeof(*(x)), (alloc))) + +#define COPY_ARRAY(dst, src, n) copy_array((dst), (src), (n), sizeof(*(dst)) + \ + BARF_UNLESS_COPYABLE((dst), (src))) +static inline void copy_array(void *dst, const void *src, size_t n, size_t size) +{ + if (n) + memcpy(dst, src, st_mult(size, n)); +} + +#define MOVE_ARRAY(dst, src, n) move_array((dst), (src), (n), sizeof(*(dst)) + \ + BARF_UNLESS_COPYABLE((dst), (src))) +static inline void move_array(void *dst, const void *src, size_t n, size_t size) +{ + if (n) + memmove(dst, src, st_mult(size, n)); +} + +#define DUP_ARRAY(dst, src, n) do { \ + size_t dup_array_n_ = (n); \ + COPY_ARRAY(ALLOC_ARRAY((dst), dup_array_n_), (src), dup_array_n_); \ +} while (0) + +/* + * These functions help you allocate structs with flex arrays, and copy + * the data directly into the array. For example, if you had: + * + * struct foo { + * int bar; + * char name[FLEX_ARRAY]; + * }; + * + * you can do: + * + * struct foo *f; + * FLEX_ALLOC_MEM(f, name, src, len); + * + * to allocate a "foo" with the contents of "src" in the "name" field. + * The resulting struct is automatically zero'd, and the flex-array field + * is NUL-terminated (whether the incoming src buffer was or not). + * + * The FLEXPTR_* variants operate on structs that don't use flex-arrays, + * but do want to store a pointer to some extra data in the same allocated + * block. For example, if you have: + * + * struct foo { + * char *name; + * int bar; + * }; + * + * you can do: + * + * struct foo *f; + * FLEXPTR_ALLOC_STR(f, name, src); + * + * and "name" will point to a block of memory after the struct, which will be + * freed along with the struct (but the pointer can be repointed anywhere). + * + * The *_STR variants accept a string parameter rather than a ptr/len + * combination. + * + * Note that these macros will evaluate the first parameter multiple + * times, and it must be assignable as an lvalue. + */ +#define FLEX_ALLOC_MEM(x, flexname, buf, len) do { \ + size_t flex_array_len_ = (len); \ + (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \ + memcpy((void *)(x)->flexname, (buf), flex_array_len_); \ +} while (0) +#define FLEXPTR_ALLOC_MEM(x, ptrname, buf, len) do { \ + size_t flex_array_len_ = (len); \ + (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \ + memcpy((x) + 1, (buf), flex_array_len_); \ + (x)->ptrname = (void *)((x)+1); \ +} while(0) +#define FLEX_ALLOC_STR(x, flexname, str) \ + FLEX_ALLOC_MEM((x), flexname, (str), strlen(str)) +#define FLEXPTR_ALLOC_STR(x, ptrname, str) \ + FLEXPTR_ALLOC_MEM((x), ptrname, (str), strlen(str)) + +static inline char *xstrdup_or_null(const char *str) +{ + return str ? xstrdup(str) : NULL; +} + +static inline size_t xsize_t(off_t len) +{ + if (len < 0 || (uintmax_t) len > SIZE_MAX) + die("Cannot handle files this big"); + return (size_t) len; +} + +/* + * Like skip_prefix, but compare case-insensitively. Note that the comparison + * is done via tolower(), so it is strictly ASCII (no multi-byte characters or + * locale-specific conversions). + */ +static inline int skip_iprefix(const char *str, const char *prefix, + const char **out) +{ + do { + if (!*prefix) { + *out = str; + return 1; + } + } while (tolower(*str++) == tolower(*prefix++)); + return 0; +} + +/* + * Like skip_prefix_mem, but compare case-insensitively. Note that the + * comparison is done via tolower(), so it is strictly ASCII (no multi-byte + * characters or locale-specific conversions). + */ +static inline int skip_iprefix_mem(const char *buf, size_t len, + const char *prefix, + const char **out, size_t *outlen) +{ + do { + if (!*prefix) { + *out = buf; + *outlen = len; + return 1; + } + } while (len-- > 0 && tolower(*buf++) == tolower(*prefix++)); + return 0; +} + +static inline int strtoul_ui(char const *s, int base, unsigned int *result) +{ + unsigned long ul; + char *p; + + errno = 0; + /* negative values would be accepted by strtoul */ + if (strchr(s, '-')) + return -1; + ul = strtoul(s, &p, base); + if (errno || *p || p == s || (unsigned int) ul != ul) + return -1; + *result = ul; + return 0; +} + +static inline int strtol_i(char const *s, int base, int *result) +{ + long ul; + char *p; + + errno = 0; + ul = strtol(s, &p, base); + if (errno || *p || p == s || (int) ul != ul) + return -1; + *result = ul; + return 0; +} + +static inline int regexec_buf(const regex_t *preg, const char *buf, size_t size, + size_t nmatch, regmatch_t pmatch[], int eflags) +{ + assert(nmatch > 0 && pmatch); + pmatch[0].rm_so = 0; + pmatch[0].rm_eo = size; + return regexec(preg, buf, nmatch, pmatch, eflags | REG_STARTEND); +} + +/* + * Our code often opens a path to an optional file, to work on its + * contents when we can successfully open it. We can ignore a failure + * to open if such an optional file does not exist, but we do want to + * report a failure in opening for other reasons (e.g. we got an I/O + * error, or the file is there, but we lack the permission to open). + * + * Call this function after seeing an error from open() or fopen() to + * see if the errno indicates a missing file that we can safely ignore. + */ +static inline int is_missing_file_error(int errno_) +{ + return (errno_ == ENOENT || errno_ == ENOTDIR); +} + +/* + * container_of - Get the address of an object containing a field. + * + * @ptr: pointer to the field. + * @type: type of the object. + * @member: name of the field within the object. + */ +#define container_of(ptr, type, member) \ + ((type *) ((char *)(ptr) - offsetof(type, member))) + +/* + * helper function for `container_of_or_null' to avoid multiple + * evaluation of @ptr + */ +static inline void *container_of_or_null_offset(void *ptr, size_t offset) +{ + return ptr ? (char *)ptr - offset : NULL; +} + +/* + * like `container_of', but allows returned value to be NULL + */ +#define container_of_or_null(ptr, type, member) \ + (type *)container_of_or_null_offset(ptr, offsetof(type, member)) + + +#endif diff --git a/git-compat-util.h b/git-compat-util.h index 9d3c21acbb..f73c8727d1 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -106,51 +106,6 @@ struct strbuf; BUILD_ASSERT_OR_ZERO(0 ? ((*(dst) = *(src)), 0) : \ sizeof(*(dst)) == sizeof(*(src))) #endif -/* - * ARRAY_SIZE - get the number of elements in a visible array - * @x: the array whose size you want. - * - * This does not work on pointers, or arrays declared as [], or - * function parameters. With correct compiler support, such usage - * will cause a build error (see the build_assert_or_zero macro). - */ -#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]) + BARF_UNLESS_AN_ARRAY(x)) - -#define bitsizeof(x) (CHAR_BIT * sizeof(x)) - -#define maximum_signed_value_of_type(a) \ - (INTMAX_MAX >> (bitsizeof(intmax_t) - bitsizeof(a))) - -#define maximum_unsigned_value_of_type(a) \ - (UINTMAX_MAX >> (bitsizeof(uintmax_t) - bitsizeof(a))) - -/* - * Signed integer overflow is undefined in C, so here's a helper macro - * to detect if the sum of two integers will overflow. - * - * Requires: a >= 0, typeof(a) equals typeof(b) - */ -#define signed_add_overflows(a, b) \ - ((b) > maximum_signed_value_of_type(a) - (a)) - -#define unsigned_add_overflows(a, b) \ - ((b) > maximum_unsigned_value_of_type(a) - (a)) - -/* - * Returns true if the multiplication of "a" and "b" will - * overflow. The types of "a" and "b" must match and must be unsigned. - * Note that this macro evaluates "a" twice! - */ -#define unsigned_mult_overflows(a, b) \ - ((a) && (b) > maximum_unsigned_value_of_type(a) / (a)) - -/* - * Returns true if the left shift of "a" by "shift" bits will - * overflow. The type of "a" must be unsigned. - */ -#define unsigned_left_shift_overflows(a, shift) \ - ((shift) < bitsizeof(a) && \ - (a) > maximum_unsigned_value_of_type(a) >> (shift)) #ifdef __GNUC__ #define TYPEOF(x) (__typeof__(x)) @@ -158,14 +113,6 @@ struct strbuf; #define TYPEOF(x) #endif -#define MSB(x, bits) ((x) & TYPEOF(x)(~0ULL << (bitsizeof(x) - (bits)))) -#define HAS_MULTI_BITS(i) ((i) & ((i) - 1)) /* checks if an integer has more than 1 bit set */ - -#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) - -/* Approximation of the length of the decimal representation of this type. */ -#define decimal_length(x) ((int)(sizeof(x) * 2.56 + 0.5) + 1) - #ifdef __MINGW64__ #define _POSIX_C_SOURCE 1 #elif defined(__sun__) @@ -677,88 +624,6 @@ void set_warn_routine(report_fn routine); report_fn get_warn_routine(void); void set_die_is_recursing_routine(int (*routine)(void)); -/* - * If the string "str" begins with the string found in "prefix", return 1. - * The "out" parameter is set to "str + strlen(prefix)" (i.e., to the point in - * the string right after the prefix). - * - * Otherwise, return 0 and leave "out" untouched. - * - * Examples: - * - * [extract branch name, fail if not a branch] - * if (!skip_prefix(ref, "refs/heads/", &branch) - * return -1; - * - * [skip prefix if present, otherwise use whole string] - * skip_prefix(name, "refs/heads/", &name); - */ -static inline int skip_prefix(const char *str, const char *prefix, - const char **out) -{ - do { - if (!*prefix) { - *out = str; - return 1; - } - } while (*str++ == *prefix++); - return 0; -} - -/* - * Like skip_prefix, but promises never to read past "len" bytes of the input - * buffer, and returns the remaining number of bytes in "out" via "outlen". - */ -static inline int skip_prefix_mem(const char *buf, size_t len, - const char *prefix, - const char **out, size_t *outlen) -{ - size_t prefix_len = strlen(prefix); - if (prefix_len <= len && !memcmp(buf, prefix, prefix_len)) { - *out = buf + prefix_len; - *outlen = len - prefix_len; - return 1; - } - return 0; -} - -/* - * If buf ends with suffix, return 1 and subtract the length of the suffix - * from *len. Otherwise, return 0 and leave *len untouched. - */ -static inline int strip_suffix_mem(const char *buf, size_t *len, - const char *suffix) -{ - size_t suflen = strlen(suffix); - if (*len < suflen || memcmp(buf + (*len - suflen), suffix, suflen)) - return 0; - *len -= suflen; - return 1; -} - -/* - * If str ends with suffix, return 1 and set *len to the size of the string - * without the suffix. Otherwise, return 0 and set *len to the size of the - * string. - * - * Note that we do _not_ NUL-terminate str to the new length. - */ -static inline int strip_suffix(const char *str, const char *suffix, size_t *len) -{ - *len = strlen(str); - return strip_suffix_mem(str, len, suffix); -} - -#define SWAP(a, b) do { \ - void *_swap_a_ptr = &(a); \ - void *_swap_b_ptr = &(b); \ - unsigned char _swap_buffer[sizeof(a)]; \ - memcpy(_swap_buffer, _swap_a_ptr, sizeof(a)); \ - memcpy(_swap_a_ptr, _swap_b_ptr, sizeof(a) + \ - BUILD_ASSERT_OR_ZERO(sizeof(a) == sizeof(b))); \ - memcpy(_swap_b_ptr, _swap_buffer, sizeof(a)); \ -} while (0) - #if defined(NO_MMAP) || defined(USE_WIN32_MMAP) #ifndef PROT_READ @@ -964,57 +829,6 @@ const char *inet_ntop(int af, const void *src, char *dst, size_t size); int git_atexit(void (*handler)(void)); #endif -static inline size_t st_add(size_t a, size_t b) -{ - if (unsigned_add_overflows(a, b)) - die("size_t overflow: %"PRIuMAX" + %"PRIuMAX, - (uintmax_t)a, (uintmax_t)b); - return a + b; -} -#define st_add3(a,b,c) st_add(st_add((a),(b)),(c)) -#define st_add4(a,b,c,d) st_add(st_add3((a),(b),(c)),(d)) - -static inline size_t st_mult(size_t a, size_t b) -{ - if (unsigned_mult_overflows(a, b)) - die("size_t overflow: %"PRIuMAX" * %"PRIuMAX, - (uintmax_t)a, (uintmax_t)b); - return a * b; -} - -static inline size_t st_sub(size_t a, size_t b) -{ - if (a < b) - die("size_t underflow: %"PRIuMAX" - %"PRIuMAX, - (uintmax_t)a, (uintmax_t)b); - return a - b; -} - -static inline size_t st_left_shift(size_t a, unsigned shift) -{ - if (unsigned_left_shift_overflows(a, shift)) - die("size_t overflow: %"PRIuMAX" << %u", - (uintmax_t)a, shift); - return a << shift; -} - -static inline unsigned long cast_size_t_to_ulong(size_t a) -{ - if (a != (unsigned long)a) - die("object too large to read on this platform: %" - PRIuMAX" is cut off to %lu", - (uintmax_t)a, (unsigned long)a); - return (unsigned long)a; -} - -static inline int cast_size_t_to_int(size_t a) -{ - if (a > INT_MAX) - die("number too large to represent as int on this platform: %"PRIuMAX, - (uintmax_t)a); - return (int)a; -} - /* * Limit size of IO chunks, because huge chunks only cause pain. OS X * 64-bit is buggy, returning EINVAL if len >= INT_MAX; and even in @@ -1046,177 +860,12 @@ static inline int cast_size_t_to_int(size_t a) # define xalloca_free(p) (free(p)) #endif -/* - * FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note - * that ptr is used twice, so don't pass e.g. ptr++. - */ -#define FREE_AND_NULL(p) do { free(p); (p) = NULL; } while (0) - -#define ALLOC_ARRAY(x, alloc) (x) = xmalloc(st_mult(sizeof(*(x)), (alloc))) -#define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x))) -#define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), st_mult(sizeof(*(x)), (alloc))) - -#define COPY_ARRAY(dst, src, n) copy_array((dst), (src), (n), sizeof(*(dst)) + \ - BARF_UNLESS_COPYABLE((dst), (src))) -static inline void copy_array(void *dst, const void *src, size_t n, size_t size) -{ - if (n) - memcpy(dst, src, st_mult(size, n)); -} - -#define MOVE_ARRAY(dst, src, n) move_array((dst), (src), (n), sizeof(*(dst)) + \ - BARF_UNLESS_COPYABLE((dst), (src))) -static inline void move_array(void *dst, const void *src, size_t n, size_t size) -{ - if (n) - memmove(dst, src, st_mult(size, n)); -} - -#define DUP_ARRAY(dst, src, n) do { \ - size_t dup_array_n_ = (n); \ - COPY_ARRAY(ALLOC_ARRAY((dst), dup_array_n_), (src), dup_array_n_); \ -} while (0) - -/* - * These functions help you allocate structs with flex arrays, and copy - * the data directly into the array. For example, if you had: - * - * struct foo { - * int bar; - * char name[FLEX_ARRAY]; - * }; - * - * you can do: - * - * struct foo *f; - * FLEX_ALLOC_MEM(f, name, src, len); - * - * to allocate a "foo" with the contents of "src" in the "name" field. - * The resulting struct is automatically zero'd, and the flex-array field - * is NUL-terminated (whether the incoming src buffer was or not). - * - * The FLEXPTR_* variants operate on structs that don't use flex-arrays, - * but do want to store a pointer to some extra data in the same allocated - * block. For example, if you have: - * - * struct foo { - * char *name; - * int bar; - * }; - * - * you can do: - * - * struct foo *f; - * FLEXPTR_ALLOC_STR(f, name, src); - * - * and "name" will point to a block of memory after the struct, which will be - * freed along with the struct (but the pointer can be repointed anywhere). - * - * The *_STR variants accept a string parameter rather than a ptr/len - * combination. - * - * Note that these macros will evaluate the first parameter multiple - * times, and it must be assignable as an lvalue. - */ -#define FLEX_ALLOC_MEM(x, flexname, buf, len) do { \ - size_t flex_array_len_ = (len); \ - (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \ - memcpy((void *)(x)->flexname, (buf), flex_array_len_); \ -} while (0) -#define FLEXPTR_ALLOC_MEM(x, ptrname, buf, len) do { \ - size_t flex_array_len_ = (len); \ - (x) = xcalloc(1, st_add3(sizeof(*(x)), flex_array_len_, 1)); \ - memcpy((x) + 1, (buf), flex_array_len_); \ - (x)->ptrname = (void *)((x)+1); \ -} while(0) -#define FLEX_ALLOC_STR(x, flexname, str) \ - FLEX_ALLOC_MEM((x), flexname, (str), strlen(str)) -#define FLEXPTR_ALLOC_STR(x, ptrname, str) \ - FLEXPTR_ALLOC_MEM((x), ptrname, (str), strlen(str)) - -static inline char *xstrdup_or_null(const char *str) -{ - return str ? xstrdup(str) : NULL; -} - -static inline size_t xsize_t(off_t len) -{ - if (len < 0 || (uintmax_t) len > SIZE_MAX) - die("Cannot handle files this big"); - return (size_t) len; -} - #ifndef HOST_NAME_MAX #define HOST_NAME_MAX 256 #endif #include "sane-ctype.h" -/* - * Like skip_prefix, but compare case-insensitively. Note that the comparison - * is done via tolower(), so it is strictly ASCII (no multi-byte characters or - * locale-specific conversions). - */ -static inline int skip_iprefix(const char *str, const char *prefix, - const char **out) -{ - do { - if (!*prefix) { - *out = str; - return 1; - } - } while (tolower(*str++) == tolower(*prefix++)); - return 0; -} - -/* - * Like skip_prefix_mem, but compare case-insensitively. Note that the - * comparison is done via tolower(), so it is strictly ASCII (no multi-byte - * characters or locale-specific conversions). - */ -static inline int skip_iprefix_mem(const char *buf, size_t len, - const char *prefix, - const char **out, size_t *outlen) -{ - do { - if (!*prefix) { - *out = buf; - *outlen = len; - return 1; - } - } while (len-- > 0 && tolower(*buf++) == tolower(*prefix++)); - return 0; -} - -static inline int strtoul_ui(char const *s, int base, unsigned int *result) -{ - unsigned long ul; - char *p; - - errno = 0; - /* negative values would be accepted by strtoul */ - if (strchr(s, '-')) - return -1; - ul = strtoul(s, &p, base); - if (errno || *p || p == s || (unsigned int) ul != ul) - return -1; - *result = ul; - return 0; -} - -static inline int strtol_i(char const *s, int base, int *result) -{ - long ul; - char *p; - - errno = 0; - ul = strtol(s, &p, base); - if (errno || *p || p == s || (int) ul != ul) - return -1; - *result = ul; - return 0; -} - void git_stable_qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *)); #ifdef INTERNAL_QSORT @@ -1249,15 +898,6 @@ int git_qsort_s(void *base, size_t nmemb, size_t size, #error "Git requires REG_STARTEND support. Compile with NO_REGEX=NeedsStartEnd" #endif -static inline int regexec_buf(const regex_t *preg, const char *buf, size_t size, - size_t nmatch, regmatch_t pmatch[], int eflags) -{ - assert(nmatch > 0 && pmatch); - pmatch[0].rm_so = 0; - pmatch[0].rm_eo = size; - return regexec(preg, buf, nmatch, pmatch, eflags | REG_STARTEND); -} - #ifdef USE_ENHANCED_BASIC_REGULAR_EXPRESSIONS int git_regcomp(regex_t *preg, const char *pattern, int cflags); #define regcomp git_regcomp @@ -1366,21 +1006,6 @@ int git_access(const char *path, int mode); # endif #endif -/* - * Our code often opens a path to an optional file, to work on its - * contents when we can successfully open it. We can ignore a failure - * to open if such an optional file does not exist, but we do want to - * report a failure in opening for other reasons (e.g. we got an I/O - * error, or the file is there, but we lack the permission to open). - * - * Call this function after seeing an error from open() or fopen() to - * see if the errno indicates a missing file that we can safely ignore. - */ -static inline int is_missing_file_error(int errno_) -{ - return (errno_ == ENOENT || errno_ == ENOTDIR); -} - int cmd_main(int, const char **); /* @@ -1422,37 +1047,14 @@ int uncompress2(Bytef *dest, uLongf *destLen, const Bytef *source, uLong *sourceLen); #endif +#include "common.h" + /* * This include must come after system headers, since it introduces macros that * replace system names. */ #include "banned.h" -/* - * container_of - Get the address of an object containing a field. - * - * @ptr: pointer to the field. - * @type: type of the object. - * @member: name of the field within the object. - */ -#define container_of(ptr, type, member) \ - ((type *) ((char *)(ptr) - offsetof(type, member))) - -/* - * helper function for `container_of_or_null' to avoid multiple - * evaluation of @ptr - */ -static inline void *container_of_or_null_offset(void *ptr, size_t offset) -{ - return ptr ? (char *)ptr - offset : NULL; -} - -/* - * like `container_of', but allows returned value to be NULL - */ -#define container_of_or_null(ptr, type, member) \ - (type *)container_of_or_null_offset(ptr, offsetof(type, member)) - /* * like offsetof(), but takes a pointer to a variable of type which * contains @member, instead of a specified type. From patchwork Tue May 23 19:29:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252811 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 09349C7EE26 for ; Tue, 23 May 2023 19:30:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238337AbjEWTab (ORCPT ); Tue, 23 May 2023 15:30:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36476 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230031AbjEWTaZ (ORCPT ); Tue, 23 May 2023 15:30:25 -0400 Received: from mail-yw1-x1149.google.com (mail-yw1-x1149.google.com [IPv6:2607:f8b0:4864:20::1149]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2388E4D for ; Tue, 23 May 2023 12:30:00 -0700 (PDT) Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-56536dd5f79so1477687b3.3 for ; Tue, 23 May 2023 12:30:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870200; x=1687462200; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=EVgMHtYITHlXRBlft+656Xm4l0ScYI4JRBN+se07l3o=; b=KuRR5tOJG41SHOphgB4lPtSQFvjmrkYiSokFlG6I7KM6Yrncg4K6aAFrE4wkr61wok tqOaQanxNl9kPmlytNWRECBwOYE2dKRpGyH1wh5STLMaDCUrZIIcG/5erq689fD3TPd5 Gh2s/d6G7tesRBlRhrKqZNhExzTJQFXRi8l5qTvABbcJqUIjotVZEK2HxBqbKInbg89o DREQIT9EYam1rmO0gJWUTy4G9q759Tx2jSnqIhXohrV/u+upmio8ce7KkfjuRB6fCFcb Gmu42xoMPr/s2YyOC1QpFQWUbGo3n/eWj26Qy3R/2tp6RmmJSA2C9rqRCVGBlWT1hu0r nmBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870200; x=1687462200; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=EVgMHtYITHlXRBlft+656Xm4l0ScYI4JRBN+se07l3o=; b=Zfl3ibHcZSMX7aclPX0FL8N/i1dJDUJGAQV98JKg03iebxuhkLGbcFbfMC1+plHxXM QJ5VfEAK5pKWXXMcHwFIOYyY2l+J6Z1AFyc/owxJ2thEmlCS6vLXm3p8XybOtoDGW6Tj EaRl4NwzXk6v4R3aOD/+BFdWyTetaUGRyU/znl2OL4b4j3sgrPv2RmvVIjjQzmWJPPqV uCceXHl9+UU+0O5AX8Y2D/9mE+ByVHaFyZ281fQbi46FiSBaFJjxn+E8xtusg4eI+h1q HPs+a55Kgv4+vu4k+jB87LOS8Y1/y3DzdEgdfLT+ujWXiAGn6LGr+W+ZRJym8aNyOfmw Fyjw== X-Gm-Message-State: AC+VfDzmdH6Te6UOpQKKGojzd0ZU2NivmOKIS8SYlnU4ZXMTqT8C6lLV Lfe1IIoBQWEI4xFVuETztRERWEG+yTcIPN2blvXRnH77Qfm0w+Hwg2nCnBuo5TaFmxDG4qLLTCJ sD0Hg3ZLVwqbx2LbEZrrpkcdlcbyy+5WrHTgu5Rc80qErZLE9vg4HrT+AdXtkKBUMAQ== X-Google-Smtp-Source: ACHHUZ5zD/yP+ak9nkr3/52IOh6xgMn9eFY/gVZjuKM0ZSurBbvj/a0K/Zzct7js0M5Y5ywxPFa7H19fHTZAc7A= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a81:ad58:0:b0:561:82e0:91b with SMTP id l24-20020a81ad58000000b0056182e0091bmr9736868ywk.6.1684870199917; Tue, 23 May 2023 12:29:59 -0700 (PDT) Date: Tue, 23 May 2023 19:29:47 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-5-calvinwan@google.com> Subject: [PATCH v2 5/7] usage.h: move declarations for usage.c functions from git-compat-util.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Signed-off-by: Calvin Wan --- common.h | 1 + git-compat-util.h | 55 ------------------------------------------- usage.h | 60 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 55 deletions(-) create mode 100644 usage.h diff --git a/common.h b/common.h index 0f164c1071..e3b673847d 100644 --- a/common.h +++ b/common.h @@ -3,6 +3,7 @@ #include "git-compat-util.h" #include "wrapper.h" +#include "usage.h" /* * ARRAY_SIZE - get the number of elements in a visible array diff --git a/git-compat-util.h b/git-compat-util.h index f73c8727d1..481dac22b0 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -572,20 +572,6 @@ static inline int git_has_dir_sep(const char *path) #include "compat/bswap.h" -#include "wrapper.h" - -/* General helper functions */ -NORETURN void usage(const char *err); -NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 1, 2))); -NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2))); -NORETURN void die_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); -int die_message(const char *err, ...) __attribute__((format (printf, 1, 2))); -int die_message_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); -int error(const char *err, ...) __attribute__((format (printf, 1, 2))); -int error_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); -void warning(const char *err, ...) __attribute__((format (printf, 1, 2))); -void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); - #ifndef NO_OPENSSL #ifdef APPLE_COMMON_CRYPTO #include "compat/apple-common-crypto.h" @@ -600,30 +586,6 @@ void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); #include #endif -/* - * Let callers be aware of the constant return value; this can help - * gcc with -Wuninitialized analysis. We restrict this trick to gcc, though, - * because other compilers may be confused by this. - */ -#if defined(__GNUC__) -static inline int const_error(void) -{ - return -1; -} -#define error(...) (error(__VA_ARGS__), const_error()) -#define error_errno(...) (error_errno(__VA_ARGS__), const_error()) -#endif - -typedef void (*report_fn)(const char *, va_list params); - -void set_die_routine(NORETURN_PTR report_fn routine); -report_fn get_die_message_routine(void); -void set_error_routine(report_fn routine); -report_fn get_error_routine(void); -void set_warn_routine(report_fn routine); -report_fn get_warn_routine(void); -void set_die_is_recursing_routine(int (*routine)(void)); - #if defined(NO_MMAP) || defined(USE_WIN32_MMAP) #ifndef PROT_READ @@ -942,23 +904,6 @@ int git_regcomp(regex_t *preg, const char *pattern, int cflags); #endif #endif -/* usage.c: only to be used for testing BUG() implementation (see test-tool) */ -extern int BUG_exit_code; - -/* usage.c: if bug() is called we should have a BUG_if_bug() afterwards */ -extern int bug_called_must_BUG; - -__attribute__((format (printf, 3, 4))) NORETURN -void BUG_fl(const char *file, int line, const char *fmt, ...); -#define BUG(...) BUG_fl(__FILE__, __LINE__, __VA_ARGS__) -__attribute__((format (printf, 3, 4))) -void bug_fl(const char *file, int line, const char *fmt, ...); -#define bug(...) bug_fl(__FILE__, __LINE__, __VA_ARGS__) -#define BUG_if_bug(...) do { \ - if (bug_called_must_BUG) \ - BUG_fl(__FILE__, __LINE__, __VA_ARGS__); \ -} while (0) - #ifndef FSYNC_METHOD_DEFAULT #ifdef __APPLE__ #define FSYNC_METHOD_DEFAULT FSYNC_METHOD_WRITEOUT_ONLY diff --git a/usage.h b/usage.h new file mode 100644 index 0000000000..770076e684 --- /dev/null +++ b/usage.h @@ -0,0 +1,60 @@ +#ifndef USAGE_H +#define USAGE_H + +#include "git-compat-util.h" + +/* General helper functions */ +NORETURN void usage(const char *err); +NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 1, 2))); +NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2))); +NORETURN void die_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); +int error(const char *err, ...) __attribute__((format (printf, 1, 2))); +int error_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); +int die_message(const char *err, ...) __attribute__((format (printf, 1, 2))); +int die_message_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); + +void warning(const char *err, ...) __attribute__((format (printf, 1, 2))); +void warning_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); + +/* + * Let callers be aware of the constant return value; this can help + * gcc with -Wuninitialized analysis. We restrict this trick to gcc, though, + * because other compilers may be confused by this. + */ +#if defined(__GNUC__) +static inline int const_error(void) +{ + return -1; +} +#define error(...) (error(__VA_ARGS__), const_error()) +#define error_errno(...) (error_errno(__VA_ARGS__), const_error()) +#endif + +typedef void (*report_fn)(const char *, va_list params); + +void set_die_routine(NORETURN_PTR report_fn routine); +report_fn get_die_message_routine(void); +void set_error_routine(report_fn routine); +report_fn get_error_routine(void); +void set_warn_routine(report_fn routine); +report_fn get_warn_routine(void); +void set_die_is_recursing_routine(int (*routine)(void)); + +/* usage.c: only to be used for testing BUG() implementation (see test-tool) */ +extern int BUG_exit_code; + +/* usage.c: if bug() is called we should have a BUG_if_bug() afterwards */ +extern int bug_called_must_BUG; + +__attribute__((format (printf, 3, 4))) NORETURN +void BUG_fl(const char *file, int line, const char *fmt, ...); +#define BUG(...) BUG_fl(__FILE__, __LINE__, __VA_ARGS__) +__attribute__((format (printf, 3, 4))) +void bug_fl(const char *file, int line, const char *fmt, ...); +#define bug(...) bug_fl(__FILE__, __LINE__, __VA_ARGS__) +#define BUG_if_bug(...) do { \ + if (bug_called_must_BUG) \ + BUG_fl(__FILE__, __LINE__, __VA_ARGS__); \ +} while (0) + +#endif /* USAGE_H */ From patchwork Tue May 23 19:29:48 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252813 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 542D8C7EE26 for ; Tue, 23 May 2023 19:30:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238361AbjEWTas (ORCPT ); Tue, 23 May 2023 15:30:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36570 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238301AbjEWTa3 (ORCPT ); Tue, 23 May 2023 15:30:29 -0400 Received: from mail-pg1-x549.google.com (mail-pg1-x549.google.com [IPv6:2607:f8b0:4864:20::549]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4389AE54 for ; Tue, 23 May 2023 12:30:02 -0700 (PDT) Received: by mail-pg1-x549.google.com with SMTP id 41be03b00d2f7-530a1b22514so4206307a12.1 for ; Tue, 23 May 2023 12:30:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870201; x=1687462201; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=+btdgC/2ad06NmCjEUd8PUPDe3kqmKdUJQY6/9wINpA=; b=2Qk1hR8txBeM4ExQdaaaJMXERWF6AYaIJZCEbvvPCv/VrpH87VHQfxmYj8KXi/cxyn xkrLh9hPaMpn6MASExwnnY0NfXQ6MsYQisJn7kDPUZZSqIj6GA+rVNdrpubPxaV9y9oh 09OYTjyYDCpyD7Z4xvs4mmVYa7xmil1NhXOHaxkyfW3RpTpCVGZNqNcupvukm+8rFamU aeo5vmSo5aK3dgiPaRW9/Reef6VZDBC+XG5GYQ2oRomxJU+7LQC6GNBzlg48fwVWFpmF qRHiLQ5B2aVnQOnWbxV3MTCm5OBoG309xqrPd9JEfoKuESSvz2CAmh4Dsh0yW18MppFx D3dw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870201; x=1687462201; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+btdgC/2ad06NmCjEUd8PUPDe3kqmKdUJQY6/9wINpA=; b=SlzxwcB5vMKfLmCB8zyy7wvVz4YuhD+HEBwazvOqEQrXKroqYmJfAq/t3So90phCu8 SSS3rvIVitabumoHfRdAzwRbfmAN+odl9L7Ep/lB68DGqFoz6wQ8x4L0Qw8DYAumnyFz NwJD4mJWpKb8DLaOI/0DgoE1OhfrwBMvSDDs5aw67FEDKnK8AgDh4EPovzxrcRoU6NfW WjWCMFpfH5JkESS1GKkeDcutQGKUM77juVUweGaE1xzMO1XOs8sM7REdoKxCgwRrWeVg x+J+6kLA61nJetevQRTqYtpEFvIcPJS9aO1f3ASowLLWpyoU/23TC4S/vHkk/pbrullg fpfw== X-Gm-Message-State: AC+VfDxovhF677+TacKV356u8B8jzOwoH7uO28oy9cu9mrlv+CllGlHB MTXrqXs7YLGFk2GTeLMCUuiGaWmd1V7cCVWlO48B2p4/Rc2JajXZkQKfnGlP1xZaz5RGAJYEsE2 Oex0E/oJMioTSWrQmzhiMIhL64diS3sk99ulYauxhQL2bzbK9GP9N9B+xx7JeNY1KQw== X-Google-Smtp-Source: ACHHUZ4rQ6O29XrfdxuTFjpKeUF5kjwYGgUj+VAsXyvVEV+4deCMLE+bVgTc28vGNgQebdbAXbsYDiz8F0krGgM= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a17:90a:ead2:b0:253:3eb4:c1f2 with SMTP id ev18-20020a17090aead200b002533eb4c1f2mr3690651pjb.5.1684870201402; Tue, 23 May 2023 12:30:01 -0700 (PDT) Date: Tue, 23 May 2023 19:29:48 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-6-calvinwan@google.com> Subject: [PATCH v2 6/7] treewide: remove unnecessary includes for wrapper.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Signed-off-by: Calvin Wan --- apply.c | 1 - builtin/am.c | 1 - builtin/bisect.c | 1 - builtin/branch.c | 1 - builtin/bugreport.c | 1 - builtin/clone.c | 1 - builtin/config.c | 1 - builtin/credential-cache.c | 1 - builtin/difftool.c | 1 - builtin/fast-import.c | 1 - builtin/fmt-merge-msg.c | 1 - builtin/gc.c | 1 - builtin/get-tar-commit-id.c | 1 - builtin/index-pack.c | 1 - builtin/init-db.c | 1 - builtin/merge.c | 1 - builtin/pack-objects.c | 1 - builtin/rebase.c | 1 - builtin/receive-pack.c | 1 - builtin/rerere.c | 1 - builtin/unpack-file.c | 1 - builtin/worktree.c | 1 - bulk-checkin.c | 1 - combine-diff.c | 1 - commit-graph.c | 1 - compat/terminal.c | 1 - config.c | 1 - convert.c | 1 - copy.c | 1 - csum-file.c | 1 - daemon.c | 1 - diff.c | 1 - dir.c | 1 - editor.c | 1 - entry.c | 1 - environment.c | 1 - fetch-pack.c | 1 - gpg-interface.c | 1 - grep.c | 1 - http-backend.c | 1 - imap-send.c | 1 - merge-ll.c | 1 - merge-recursive.c | 1 - notes-merge.c | 1 - object-file.c | 1 - pack-write.c | 1 - packfile.c | 1 - parallel-checkout.c | 1 - path.c | 1 - pkt-line.c | 1 - read-cache.c | 1 - rebase-interactive.c | 1 - refs.c | 1 - rerere.c | 1 - send-pack.c | 1 - sequencer.c | 1 - server-info.c | 1 - setup.c | 1 - shallow.c | 1 - strbuf.c | 1 - streaming.c | 1 - t/helper/test-delta.c | 1 - t/helper/test-fsmonitor-client.c | 1 - t/helper/test-read-cache.c | 1 - tag.c | 1 - tempfile.c | 1 - trace.c | 1 - transport-helper.c | 1 - transport.c | 1 - upload-pack.c | 1 - usage.c | 1 - worktree.c | 1 - wrapper.c | 1 - write-or-die.c | 1 - 74 files changed, 74 deletions(-) diff --git a/apply.c b/apply.c index 8bd0109fcc..99c2a91de7 100644 --- a/apply.c +++ b/apply.c @@ -37,7 +37,6 @@ #include "symlinks.h" #include "wildmatch.h" #include "ws.h" -#include "wrapper.h" struct gitdiff_data { struct strbuf *root; diff --git a/builtin/am.c b/builtin/am.c index 5fab159599..dcb89439b1 100644 --- a/builtin/am.c +++ b/builtin/am.c @@ -44,7 +44,6 @@ #include "path.h" #include "repository.h" #include "pretty.h" -#include "wrapper.h" /** * Returns the length of the first line of msg. diff --git a/builtin/bisect.c b/builtin/bisect.c index 6478df3489..65478ef40f 100644 --- a/builtin/bisect.c +++ b/builtin/bisect.c @@ -15,7 +15,6 @@ #include "prompt.h" #include "quote.h" #include "revision.h" -#include "wrapper.h" static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS") static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV") diff --git a/builtin/branch.c b/builtin/branch.c index 6249fa1809..ff8a875c03 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -28,7 +28,6 @@ #include "worktree.h" #include "help.h" #include "commit-reach.h" -#include "wrapper.h" static const char * const builtin_branch_usage[] = { N_("git branch [] [-r | -a] [--merged] [--no-merged]"), diff --git a/builtin/bugreport.c b/builtin/bugreport.c index daf6c23657..d2ae5c305d 100644 --- a/builtin/bugreport.c +++ b/builtin/bugreport.c @@ -11,7 +11,6 @@ #include "diagnose.h" #include "object-file.h" #include "setup.h" -#include "wrapper.h" static void get_system_info(struct strbuf *sys_info) { diff --git a/builtin/clone.c b/builtin/clone.c index 687a686269..3fc0e5d7c0 100644 --- a/builtin/clone.c +++ b/builtin/clone.c @@ -45,7 +45,6 @@ #include "hook.h" #include "bundle.h" #include "bundle-uri.h" -#include "wrapper.h" /* * Overall FIXMEs: diff --git a/builtin/config.c b/builtin/config.c index 30f6d9fe67..c01f136a2b 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -14,7 +14,6 @@ #include "setup.h" #include "strbuf.h" #include "worktree.h" -#include "wrapper.h" static const char *const builtin_config_usage[] = { N_("git config []"), diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c index ff3a47badb..43b9d0e5b1 100644 --- a/builtin/credential-cache.c +++ b/builtin/credential-cache.c @@ -3,7 +3,6 @@ #include "parse-options.h" #include "path.h" #include "strbuf.h" -#include "wrapper.h" #include "write-or-die.h" #ifndef NO_UNIX_SOCKETS diff --git a/builtin/difftool.c b/builtin/difftool.c index e2c9ab7d5d..aeb0f92409 100644 --- a/builtin/difftool.c +++ b/builtin/difftool.c @@ -32,7 +32,6 @@ #include "dir.h" #include "entry.h" #include "setup.h" -#include "wrapper.h" static int trust_exit_code; diff --git a/builtin/fast-import.c b/builtin/fast-import.c index 2ee19c7373..4dbb10aff3 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -26,7 +26,6 @@ #include "commit-reach.h" #include "khash.h" #include "date.h" -#include "wrapper.h" #define PACK_ID_BITS 16 #define MAX_PACK_ID ((1<] [--log[=] | --no-log] [--file ]"), diff --git a/builtin/gc.c b/builtin/gc.c index 91eec7703a..19d73067aa 100644 --- a/builtin/gc.c +++ b/builtin/gc.c @@ -41,7 +41,6 @@ #include "hook.h" #include "setup.h" #include "trace2.h" -#include "wrapper.h" #define FAILED_RUN "failed to run %s" diff --git a/builtin/get-tar-commit-id.c b/builtin/get-tar-commit-id.c index 9303e386cc..20d0dfe9cf 100644 --- a/builtin/get-tar-commit-id.c +++ b/builtin/get-tar-commit-id.c @@ -5,7 +5,6 @@ #include "commit.h" #include "tar.h" #include "quote.h" -#include "wrapper.h" static const char builtin_get_tar_commit_id_usage[] = "git get-tar-commit-id"; diff --git a/builtin/index-pack.c b/builtin/index-pack.c index 820860265d..f58f9db69d 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -25,7 +25,6 @@ #include "replace-object.h" #include "promisor-remote.h" #include "setup.h" -#include "wrapper.h" static const char index_pack_usage[] = "git index-pack [-v] [-o ] [--keep | --keep=] [--[no-]rev-index] [--verify] [--strict] ( | --stdin [--fix-thin] [])"; diff --git a/builtin/init-db.c b/builtin/init-db.c index 0d8bd4d721..cb727c826f 100644 --- a/builtin/init-db.c +++ b/builtin/init-db.c @@ -13,7 +13,6 @@ #include "path.h" #include "setup.h" #include "strbuf.h" -#include "wrapper.h" static int guess_repository_type(const char *git_dir) { diff --git a/builtin/merge.c b/builtin/merge.c index 41fe0d8e5e..2f2f0a0b4c 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -53,7 +53,6 @@ #include "commit-reach.h" #include "wt-status.h" #include "commit-graph.h" -#include "wrapper.h" #define DEFAULT_TWOHEAD (1<<0) #define DEFAULT_OCTOPUS (1<<1) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index af9352b228..6409c07c7d 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -43,7 +43,6 @@ #include "promisor-remote.h" #include "pack-mtimes.h" #include "parse-options.h" -#include "wrapper.h" /* * Objects we are going to pack are collected in the `to_pack` structure. diff --git a/builtin/rebase.c b/builtin/rebase.c index 555c5d3f02..6c23e7b25c 100644 --- a/builtin/rebase.c +++ b/builtin/rebase.c @@ -37,7 +37,6 @@ #include "reset.h" #include "trace2.h" #include "hook.h" -#include "wrapper.h" static char const * const builtin_rebase_usage[] = { N_("git rebase [-i] [options] [--exec ] " diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index 2b2faa5d18..2d7f0355dc 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -40,7 +40,6 @@ #include "worktree.h" #include "shallow.h" #include "parse-options.h" -#include "wrapper.h" static const char * const receive_pack_usage[] = { N_("git receive-pack "), diff --git a/builtin/rerere.c b/builtin/rerere.c index 0458db9cad..07a9d37275 100644 --- a/builtin/rerere.c +++ b/builtin/rerere.c @@ -6,7 +6,6 @@ #include "repository.h" #include "string-list.h" #include "rerere.h" -#include "wrapper.h" #include "xdiff/xdiff.h" #include "xdiff-interface.h" #include "pathspec.h" diff --git a/builtin/unpack-file.c b/builtin/unpack-file.c index 6842a6c499..c129e2bb6c 100644 --- a/builtin/unpack-file.c +++ b/builtin/unpack-file.c @@ -3,7 +3,6 @@ #include "hex.h" #include "object-name.h" #include "object-store-ll.h" -#include "wrapper.h" static char *create_temp_file(struct object_id *oid) { diff --git a/builtin/worktree.c b/builtin/worktree.c index 4780b3b5f5..cc6d143ad0 100644 --- a/builtin/worktree.c +++ b/builtin/worktree.c @@ -24,7 +24,6 @@ #include "submodule.h" #include "utf8.h" #include "worktree.h" -#include "wrapper.h" #include "quote.h" #define BUILTIN_WORKTREE_ADD_USAGE \ diff --git a/bulk-checkin.c b/bulk-checkin.c index e2f71db0f6..fec6816259 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -17,7 +17,6 @@ #include "packfile.h" #include "object-file.h" #include "object-store-ll.h" -#include "wrapper.h" static int odb_transaction_nesting; diff --git a/combine-diff.c b/combine-diff.c index 11e9d7494a..f90f442482 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -17,7 +17,6 @@ #include "userdiff.h" #include "oid-array.h" #include "revision.h" -#include "wrapper.h" static int compare_paths(const struct combine_diff_path *one, const struct diff_filespec *two) diff --git a/commit-graph.c b/commit-graph.c index 8f43eb12d4..55d288cb3b 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -26,7 +26,6 @@ #include "trace2.h" #include "tree.h" #include "chunk-format.h" -#include "wrapper.h" void git_test_write_commit_graph_or_die(void) { diff --git a/compat/terminal.c b/compat/terminal.c index d87e321189..83d95e8656 100644 --- a/compat/terminal.c +++ b/compat/terminal.c @@ -6,7 +6,6 @@ #include "run-command.h" #include "string-list.h" #include "hashmap.h" -#include "wrapper.h" #if defined(HAVE_DEV_TTY) || defined(GIT_WINDOWS_NATIVE) diff --git a/config.c b/config.c index e08e2332a6..cc97c18141 100644 --- a/config.c +++ b/config.c @@ -39,7 +39,6 @@ #include "wildmatch.h" #include "worktree.h" #include "ws.h" -#include "wrapper.h" #include "write-or-die.h" struct config_source { diff --git a/convert.c b/convert.c index 3d8325d49e..4aef90a7b6 100644 --- a/convert.c +++ b/convert.c @@ -16,7 +16,6 @@ #include "trace.h" #include "utf8.h" #include "merge-ll.h" -#include "wrapper.h" /* * convert.c - convert a file when checking it out and checking it in. diff --git a/copy.c b/copy.c index 882c79cffb..23d84c6c1d 100644 --- a/copy.c +++ b/copy.c @@ -1,7 +1,6 @@ #include "git-compat-util.h" #include "copy.h" #include "path.h" -#include "wrapper.h" int copy_fd(int ifd, int ofd) { diff --git a/csum-file.c b/csum-file.c index daf9b06dff..cd01713244 100644 --- a/csum-file.c +++ b/csum-file.c @@ -11,7 +11,6 @@ #include "progress.h" #include "csum-file.h" #include "hash.h" -#include "wrapper.h" static void verify_buffer_or_die(struct hashfile *f, const void *buf, diff --git a/daemon.c b/daemon.c index 7139cc201d..3722edf46c 100644 --- a/daemon.c +++ b/daemon.c @@ -10,7 +10,6 @@ #include "setup.h" #include "strbuf.h" #include "string-list.h" -#include "wrapper.h" #ifdef NO_INITGROUPS #define initgroups(x, y) (0) /* nothing */ diff --git a/diff.c b/diff.c index 351d1d0591..10c8597ba0 100644 --- a/diff.c +++ b/diff.c @@ -43,7 +43,6 @@ #include "setup.h" #include "strmap.h" #include "ws.h" -#include "wrapper.h" #ifdef NO_FAST_WORKING_DIRECTORY #define FAST_WORKING_DIRECTORY 0 diff --git a/dir.c b/dir.c index 3acac7beb1..d270a1be36 100644 --- a/dir.c +++ b/dir.c @@ -32,7 +32,6 @@ #include "symlinks.h" #include "trace2.h" #include "tree.h" -#include "wrapper.h" /* * Tells read_directory_recursive how a file or directory should be treated. diff --git a/editor.c b/editor.c index 38c5dbbb79..b67b802ddf 100644 --- a/editor.c +++ b/editor.c @@ -11,7 +11,6 @@ #include "strvec.h" #include "run-command.h" #include "sigchain.h" -#include "wrapper.h" #ifndef DEFAULT_EDITOR #define DEFAULT_EDITOR "vi" diff --git a/entry.c b/entry.c index f9a7c726a4..43767f9043 100644 --- a/entry.c +++ b/entry.c @@ -14,7 +14,6 @@ #include "fsmonitor.h" #include "entry.h" #include "parallel-checkout.h" -#include "wrapper.h" static void create_directories(const char *path, int path_len, const struct checkout *state) diff --git a/environment.c b/environment.c index 5e9b331279..73b5b59ecf 100644 --- a/environment.c +++ b/environment.c @@ -28,7 +28,6 @@ #include "setup.h" #include "shallow.h" #include "trace.h" -#include "wrapper.h" #include "write-or-die.h" int trust_executable_bit = 1; diff --git a/fetch-pack.c b/fetch-pack.c index a432eacab9..84a24ff9b1 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -34,7 +34,6 @@ #include "commit-graph.h" #include "sigchain.h" #include "mergesort.h" -#include "wrapper.h" static int transfer_unpack_limit = -1; static int fetch_unpack_limit = -1; diff --git a/gpg-interface.c b/gpg-interface.c index 6a3817bbca..206ffdd79e 100644 --- a/gpg-interface.c +++ b/gpg-interface.c @@ -12,7 +12,6 @@ #include "sigchain.h" #include "tempfile.h" #include "alias.h" -#include "wrapper.h" #include "environment.h" static int git_gpg_config(const char *, const char *, void *); diff --git a/grep.c b/grep.c index ebcd647478..a3cc8224db 100644 --- a/grep.c +++ b/grep.c @@ -12,7 +12,6 @@ #include "commit.h" #include "quote.h" #include "help.h" -#include "wrapper.h" static int grep_source_load(struct grep_source *gs); static int grep_source_is_binary(struct grep_source *gs, diff --git a/http-backend.c b/http-backend.c index 895fac35f7..01d0405597 100644 --- a/http-backend.c +++ b/http-backend.c @@ -19,7 +19,6 @@ #include "object-store-ll.h" #include "protocol.h" #include "date.h" -#include "wrapper.h" #include "write-or-die.h" static const char content_type[] = "Content-Type"; diff --git a/imap-send.c b/imap-send.c index d1f312a07c..ef0b6a3f03 100644 --- a/imap-send.c +++ b/imap-send.c @@ -30,7 +30,6 @@ #include "parse-options.h" #include "setup.h" #include "strbuf.h" -#include "wrapper.h" #if defined(NO_OPENSSL) && !defined(HAVE_OPENSSL_CSPRNG) typedef void *SSL; #endif diff --git a/merge-ll.c b/merge-ll.c index 740b8c6bfd..ad26d7e260 100644 --- a/merge-ll.c +++ b/merge-ll.c @@ -13,7 +13,6 @@ #include "merge-ll.h" #include "quote.h" #include "strbuf.h" -#include "wrapper.h" struct ll_merge_driver; diff --git a/merge-recursive.c b/merge-recursive.c index 43f6b2d036..6a4081bb0f 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -38,7 +38,6 @@ #include "tag.h" #include "tree-walk.h" #include "unpack-trees.h" -#include "wrapper.h" #include "xdiff-interface.h" struct merge_options_internal { diff --git a/notes-merge.c b/notes-merge.c index 071947894e..8799b522a5 100644 --- a/notes-merge.c +++ b/notes-merge.c @@ -20,7 +20,6 @@ #include "trace.h" #include "notes-utils.h" #include "commit-reach.h" -#include "wrapper.h" struct notes_merge_pair { struct object_id obj, base, local, remote; diff --git a/object-file.c b/object-file.c index 8d87720dd5..527b740018 100644 --- a/object-file.c +++ b/object-file.c @@ -44,7 +44,6 @@ #include "setup.h" #include "submodule.h" #include "fsck.h" -#include "wrapper.h" /* The maximum size for an object header. */ #define MAX_HEADER_LEN 32 diff --git a/pack-write.c b/pack-write.c index af48813a9b..b19ddf15b2 100644 --- a/pack-write.c +++ b/pack-write.c @@ -12,7 +12,6 @@ #include "pack-revindex.h" #include "path.h" #include "strbuf.h" -#include "wrapper.h" void reset_pack_idx_option(struct pack_idx_option *opts) { diff --git a/packfile.c b/packfile.c index c60aeb05ec..7683a6dbea 100644 --- a/packfile.c +++ b/packfile.c @@ -24,7 +24,6 @@ #include "commit-graph.h" #include "pack-revindex.h" #include "promisor-remote.h" -#include "wrapper.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *hash, diff --git a/parallel-checkout.c b/parallel-checkout.c index 602fbf19d3..8637723461 100644 --- a/parallel-checkout.c +++ b/parallel-checkout.c @@ -15,7 +15,6 @@ #include "symlinks.h" #include "thread-utils.h" #include "trace2.h" -#include "wrapper.h" struct pc_worker { struct child_process cp; diff --git a/path.c b/path.c index 044a50bad0..67e2690efe 100644 --- a/path.c +++ b/path.c @@ -18,7 +18,6 @@ #include "object-store-ll.h" #include "lockfile.h" #include "exec-cmd.h" -#include "wrapper.h" static int get_st_mode_bits(const char *path, int *mode) { diff --git a/pkt-line.c b/pkt-line.c index 62b4208b66..6e4166132d 100644 --- a/pkt-line.c +++ b/pkt-line.c @@ -5,7 +5,6 @@ #include "hex.h" #include "run-command.h" #include "trace.h" -#include "wrapper.h" #include "write-or-die.h" char packet_buffer[LARGE_PACKET_MAX]; diff --git a/read-cache.c b/read-cache.c index b9a995e5a1..140b4f96a0 100644 --- a/read-cache.c +++ b/read-cache.c @@ -46,7 +46,6 @@ #include "csum-file.h" #include "promisor-remote.h" #include "hook.h" -#include "wrapper.h" /* Mask for the name length in ce_flags in the on-disk index */ diff --git a/rebase-interactive.c b/rebase-interactive.c index f286404d4b..d9718409b3 100644 --- a/rebase-interactive.c +++ b/rebase-interactive.c @@ -11,7 +11,6 @@ #include "config.h" #include "dir.h" #include "object-name.h" -#include "wrapper.h" static const char edit_todo_list_advice[] = N_("You can fix this with 'git rebase --edit-todo' " diff --git a/refs.c b/refs.c index 3065e514fd..1cba800add 100644 --- a/refs.c +++ b/refs.c @@ -30,7 +30,6 @@ #include "date.h" #include "commit.h" #include "wildmatch.h" -#include "wrapper.h" /* * List of all available backends diff --git a/rerere.c b/rerere.c index e2b8597f88..4227c9612a 100644 --- a/rerere.c +++ b/rerere.c @@ -20,7 +20,6 @@ #include "object-store-ll.h" #include "hash-lookup.h" #include "strmap.h" -#include "wrapper.h" #define RESOLVED 0 #define PUNTED 1 diff --git a/send-pack.c b/send-pack.c index 9510bef856..89aca9d829 100644 --- a/send-pack.c +++ b/send-pack.c @@ -15,7 +15,6 @@ #include "quote.h" #include "transport.h" #include "version.h" -#include "wrapper.h" #include "oid-array.h" #include "gpg-interface.h" #include "shallow.h" diff --git a/sequencer.c b/sequencer.c index 6a5498281e..5891466d91 100644 --- a/sequencer.c +++ b/sequencer.c @@ -49,7 +49,6 @@ #include "rebase-interactive.h" #include "reset.h" #include "branch.h" -#include "wrapper.h" #define GIT_REFLOG_ACTION "GIT_REFLOG_ACTION" diff --git a/server-info.c b/server-info.c index 382e481a2b..f350713ecf 100644 --- a/server-info.c +++ b/server-info.c @@ -14,7 +14,6 @@ #include "object-store-ll.h" #include "server-info.h" #include "strbuf.h" -#include "wrapper.h" struct update_info_ctx { FILE *cur_fp; diff --git a/setup.c b/setup.c index 3c383c972c..1b2f16229b 100644 --- a/setup.c +++ b/setup.c @@ -17,7 +17,6 @@ #include "quote.h" #include "trace2.h" #include "worktree.h" -#include "wrapper.h" static int inside_git_dir = -1; static int inside_work_tree = -1; diff --git a/shallow.c b/shallow.c index f3ef94d4c9..2fad3504b7 100644 --- a/shallow.c +++ b/shallow.c @@ -20,7 +20,6 @@ #include "shallow.h" #include "statinfo.h" #include "trace.h" -#include "wrapper.h" void set_alternate_shallow_file(struct repository *r, const char *path, int override) { diff --git a/strbuf.c b/strbuf.c index 37fd5247b3..77e205d0be 100644 --- a/strbuf.c +++ b/strbuf.c @@ -7,7 +7,6 @@ #include "string-list.h" #include "utf8.h" #include "date.h" -#include "wrapper.h" int starts_with(const char *str, const char *prefix) { diff --git a/streaming.c b/streaming.c index 49791ab958..10adf625b2 100644 --- a/streaming.c +++ b/streaming.c @@ -10,7 +10,6 @@ #include "object-store-ll.h" #include "replace-object.h" #include "packfile.h" -#include "wrapper.h" typedef int (*open_istream_fn)(struct git_istream *, struct repository *, diff --git a/t/helper/test-delta.c b/t/helper/test-delta.c index e7d134ec25..6bc787a474 100644 --- a/t/helper/test-delta.c +++ b/t/helper/test-delta.c @@ -11,7 +11,6 @@ #include "test-tool.h" #include "git-compat-util.h" #include "delta.h" -#include "wrapper.h" static const char usage_str[] = "test-tool delta (-d|-p) "; diff --git a/t/helper/test-fsmonitor-client.c b/t/helper/test-fsmonitor-client.c index 58d1dc5fc8..8280984d08 100644 --- a/t/helper/test-fsmonitor-client.c +++ b/t/helper/test-fsmonitor-client.c @@ -11,7 +11,6 @@ #include "setup.h" #include "thread-utils.h" #include "trace2.h" -#include "wrapper.h" #ifndef HAVE_FSMONITOR_DAEMON_BACKEND int cmd__fsmonitor_client(int argc UNUSED, const char **argv UNUSED) diff --git a/t/helper/test-read-cache.c b/t/helper/test-read-cache.c index 56c2d25f35..1acd362346 100644 --- a/t/helper/test-read-cache.c +++ b/t/helper/test-read-cache.c @@ -4,7 +4,6 @@ #include "read-cache-ll.h" #include "repository.h" #include "setup.h" -#include "wrapper.h" int cmd__read_cache(int argc, const char **argv) { diff --git a/tag.c b/tag.c index c356d58890..c1537e30cb 100644 --- a/tag.c +++ b/tag.c @@ -11,7 +11,6 @@ #include "gpg-interface.h" #include "hex.h" #include "packfile.h" -#include "wrapper.h" const char *tag_type = "tag"; diff --git a/tempfile.c b/tempfile.c index 6c88a63b42..ecdebf1afb 100644 --- a/tempfile.c +++ b/tempfile.c @@ -47,7 +47,6 @@ #include "path.h" #include "tempfile.h" #include "sigchain.h" -#include "wrapper.h" static VOLATILE_LIST_HEAD(tempfile_list); diff --git a/trace.c b/trace.c index 592c141d78..971a68abe8 100644 --- a/trace.c +++ b/trace.c @@ -27,7 +27,6 @@ #include "quote.h" #include "setup.h" #include "trace.h" -#include "wrapper.h" struct trace_key trace_default_key = { "GIT_TRACE", 0, 0, 0 }; struct trace_key trace_perf_key = TRACE_KEY_INIT(PERFORMANCE); diff --git a/transport-helper.c b/transport-helper.c index 5c0bc6a896..49811ef176 100644 --- a/transport-helper.c +++ b/transport-helper.c @@ -19,7 +19,6 @@ #include "refspec.h" #include "transport-internal.h" #include "protocol.h" -#include "wrapper.h" static int debug; diff --git a/transport.c b/transport.c index 4dc187a388..0a5794a944 100644 --- a/transport.c +++ b/transport.c @@ -30,7 +30,6 @@ #include "object-store-ll.h" #include "color.h" #include "bundle-uri.h" -#include "wrapper.h" static int transport_use_color = -1; static char transport_colors[][COLOR_MAXLEN] = { diff --git a/upload-pack.c b/upload-pack.c index 3a176a7209..3dc92d5aac 100644 --- a/upload-pack.c +++ b/upload-pack.c @@ -32,7 +32,6 @@ #include "commit-graph.h" #include "commit-reach.h" #include "shallow.h" -#include "wrapper.h" #include "write-or-die.h" /* Remember to update object flag allocation in object.h */ diff --git a/usage.c b/usage.c index 46d99f8bd4..09f0ed509b 100644 --- a/usage.c +++ b/usage.c @@ -6,7 +6,6 @@ #include "git-compat-util.h" #include "gettext.h" #include "trace2.h" -#include "wrapper.h" static void vreportf(const char *prefix, const char *err, va_list params) { diff --git a/worktree.c b/worktree.c index f9aa371ca7..2018c127ca 100644 --- a/worktree.c +++ b/worktree.c @@ -12,7 +12,6 @@ #include "dir.h" #include "wt-status.h" #include "config.h" -#include "wrapper.h" void free_worktrees(struct worktree **worktrees) { diff --git a/wrapper.c b/wrapper.c index 67f5f5dbe1..22be9812a7 100644 --- a/wrapper.c +++ b/wrapper.c @@ -9,7 +9,6 @@ #include "repository.h" #include "strbuf.h" #include "trace2.h" -#include "wrapper.h" static intmax_t count_fsync_writeout_only; static intmax_t count_fsync_hardware_flush; diff --git a/write-or-die.c b/write-or-die.c index cc9e0787a1..d8355c0c3e 100644 --- a/write-or-die.c +++ b/write-or-die.c @@ -1,7 +1,6 @@ #include "git-compat-util.h" #include "config.h" #include "run-command.h" -#include "wrapper.h" #include "write-or-die.h" /* From patchwork Tue May 23 19:29:49 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Calvin Wan X-Patchwork-Id: 13252814 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 83FD6C7EE23 for ; Tue, 23 May 2023 19:30:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238341AbjEWTat (ORCPT ); Tue, 23 May 2023 15:30:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36598 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238327AbjEWTab (ORCPT ); Tue, 23 May 2023 15:30:31 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42098E58 for ; Tue, 23 May 2023 12:30:04 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-ba8337ade1cso166731276.2 for ; Tue, 23 May 2023 12:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1684870203; x=1687462203; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=8c0WYmbBS+/AVEHTmQCIj1F75JjDYePiRCiBCIIOIKc=; b=YqrOBOqwHlppEqTSUpcDXQaxLsigGJYORsURHhZVLAk61hsE9YCPBsBmaghT8GFqi2 QzPuB+plRxepB94h/l4whV7ljjHf+NJesPTyroyELkH9toWG/13XCvh0pEtJsBZ4pjW0 N2K1Z6AgG+CRrnZZ4FqVFXKo/XvjlQynxwRAP8GQ22+C1TdnEWb3MNswpDyR9f0qT+Ff HdvDuZu+iGnuI0ZnfLM3Kx/XE7iODZQvMfLAiYGxWwzYkNIcPUpnp8Kib89SRJmIhjT5 Z+4CZ82r+kk3AN0jXjLWl0AcNU2/F9udMadmUp0NZx5NCQkaMnln+TrjKsXhN7LC0EiS LGew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684870203; x=1687462203; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=8c0WYmbBS+/AVEHTmQCIj1F75JjDYePiRCiBCIIOIKc=; b=duZex4tVAy5lFH7QHtnvpverAgeCfKzHW/I2eKEeDSV2uuCgHms7f4Df4dri6ppURf aY44YtEfv3jUBwJKzkKhCR3f0vYwk2C99Mk+ozdu4tlilsVWGl15+smBwW0MyiJLEYke Jdls9g/WL05m26/gmedzbXzDLsG4puOUFUEJTiO3C6TW7x/EJDDFcEzboHCuOEkQfpUl HIH/iu7Y8aHM39B5wkxzgRty9ND/vwQ+Ubr1A0qRkYTkPEcYw+s2wSjey5o+kDKHTYpD gD3QzDbSp1RUbBtRGMAMBUbiTWbyag5Z11rbsUhAetAIP/ydGKM9Wk+ffEEjMcB44v/y ekWA== X-Gm-Message-State: AC+VfDxpzm7YHdxM/tR57rg8+5VpJAYLh6tiaFNj/ouNxOV+SlRGwx6J lg9/HfmR7gMDnH/KW/668Omyo/4jaJ9MnKGBtu967EB7talIiOBSLRl2GcKB20vTlQAw4bixXT6 Qn3rUuKjtlesxirNPH7rKDJbkGm0UduY7/1Q8sfwYQWSlG1ni57el5tD4bBKBrFtY4g== X-Google-Smtp-Source: ACHHUZ4T4I2UFIuiBWGxcCApaypoNkOhPh0cUvDSZTxNEXE9pUzuBEKol+WioL0yDdb1XC6pdiz7ueNHav8/wvI= X-Received: from barleywine.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:3bd4]) (user=calvinwan job=sendgmr) by 2002:a5b:dc7:0:b0:ba8:1fab:4f99 with SMTP id t7-20020a5b0dc7000000b00ba81fab4f99mr6165141ybr.9.1684870203364; Tue, 23 May 2023 12:30:03 -0700 (PDT) Date: Tue, 23 May 2023 19:29:49 +0000 In-Reply-To: <20230523192749.1270992-1-calvinwan@google.com> Mime-Version: 1.0 References: <20230523192749.1270992-1-calvinwan@google.com> X-Mailer: git-send-email 2.40.1.698.g37aff9b760-goog Message-ID: <20230523192949.1271671-7-calvinwan@google.com> Subject: [PATCH v2 7/7] common: move alloc macros to common.h From: Calvin Wan To: git@vger.kernel.org Cc: Calvin Wan Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org alloc_nr, ALLOC_GROW, and ALLOC_GROW_BY are commonly used macros for dynamic array allocation. Moving these macros to common.h focuses alloc.[ch] to allocation for Git objects and additionally allows us to remove inclusions to alloc.h from files that solely used the above macros. Signed-off-by: Calvin Wan --- add-patch.c | 1 - alias.c | 1 - alloc.h | 75 ------------------------------ apply.c | 1 - archive-tar.c | 1 - archive.c | 1 - attr.c | 1 - builtin/blame.c | 1 - builtin/cat-file.c | 1 - builtin/checkout--worker.c | 1 - builtin/config.c | 1 - builtin/credential-cache--daemon.c | 1 - builtin/fetch-pack.c | 1 - builtin/fsmonitor--daemon.c | 1 - builtin/grep.c | 1 - builtin/index-pack.c | 1 - builtin/log.c | 1 - builtin/merge.c | 1 - builtin/mktree.c | 1 - builtin/mv.c | 1 - builtin/name-rev.c | 1 - builtin/pack-objects.c | 1 - builtin/repack.c | 1 - builtin/rev-parse.c | 1 - builtin/revert.c | 1 - builtin/rm.c | 1 - builtin/submodule--helper.c | 1 - bulk-checkin.c | 1 - cache-tree.c | 1 - chunk-format.c | 1 - commit-reach.c | 1 - common.h | 75 ++++++++++++++++++++++++++++++ config.c | 1 - daemon.c | 1 - delta-islands.c | 1 - diff.c | 1 - diffcore-rename.c | 1 - dir-iterator.c | 1 - dir.c | 1 - ewah/bitmap.c | 1 - ewah/ewah_bitmap.c | 1 - fetch-pack.c | 1 - fmt-merge-msg.c | 1 - fsck.c | 1 - help.c | 1 - http-backend.c | 1 - line-log.c | 1 - list-objects-filter-options.c | 1 - list-objects-filter.c | 1 - midx.c | 1 - object-file.c | 1 - oid-array.c | 1 - oidtree.c | 1 - pack-bitmap-write.c | 1 - pack-bitmap.c | 1 - pack-objects.c | 1 - packfile.c | 1 - parallel-checkout.c | 1 - pretty.c | 1 - prio-queue.c | 1 - quote.c | 1 - read-cache.c | 1 - ref-filter.c | 1 - reflog-walk.c | 1 - refs.c | 1 - refspec.c | 1 - remote-curl.c | 1 - remote.c | 1 - rerere.c | 1 - revision.c | 1 - sequencer.c | 1 - server-info.c | 1 - shallow.c | 1 - sigchain.c | 1 - sparse-index.c | 1 - split-index.c | 1 - strbuf.c | 1 - string-list.c | 1 - strvec.c | 1 - submodule-config.c | 1 - submodule.c | 1 - t/helper/test-reach.c | 1 - trace2/tr2_tls.c | 1 - trailer.c | 1 - transport.c | 1 - tree-walk.c | 1 - userdiff.c | 1 - worktree.c | 1 - 88 files changed, 75 insertions(+), 161 deletions(-) diff --git a/add-patch.c b/add-patch.c index ba629add62..bfe19876cd 100644 --- a/add-patch.c +++ b/add-patch.c @@ -1,7 +1,6 @@ #include "git-compat-util.h" #include "add-interactive.h" #include "advice.h" -#include "alloc.h" #include "editor.h" #include "environment.h" #include "gettext.h" diff --git a/alias.c b/alias.c index 54a1a23d2c..38e1339936 100644 --- a/alias.c +++ b/alias.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "alias.h" -#include "alloc.h" #include "config.h" #include "gettext.h" #include "strbuf.h" diff --git a/alloc.h b/alloc.h index 4312db4bd0..3f4a0ad310 100644 --- a/alloc.h +++ b/alloc.h @@ -17,79 +17,4 @@ void *alloc_object_node(struct repository *r); struct alloc_state *allocate_alloc_state(void); void clear_alloc_state(struct alloc_state *s); -#define alloc_nr(x) (((x)+16)*3/2) - -/** - * Dynamically growing an array using realloc() is error prone and boring. - * - * Define your array with: - * - * - a pointer (`item`) that points at the array, initialized to `NULL` - * (although please name the variable based on its contents, not on its - * type); - * - * - an integer variable (`alloc`) that keeps track of how big the current - * allocation is, initialized to `0`; - * - * - another integer variable (`nr`) to keep track of how many elements the - * array currently has, initialized to `0`. - * - * Then before adding `n`th element to the item, call `ALLOC_GROW(item, n, - * alloc)`. This ensures that the array can hold at least `n` elements by - * calling `realloc(3)` and adjusting `alloc` variable. - * - * ------------ - * sometype *item; - * size_t nr; - * size_t alloc - * - * for (i = 0; i < nr; i++) - * if (we like item[i] already) - * return; - * - * // we did not like any existing one, so add one - * ALLOC_GROW(item, nr + 1, alloc); - * item[nr++] = value you like; - * ------------ - * - * You are responsible for updating the `nr` variable. - * - * If you need to specify the number of elements to allocate explicitly - * then use the macro `REALLOC_ARRAY(item, alloc)` instead of `ALLOC_GROW`. - * - * Consider using ALLOC_GROW_BY instead of ALLOC_GROW as it has some - * added niceties. - * - * DO NOT USE any expression with side-effect for 'x', 'nr', or 'alloc'. - */ -#define ALLOC_GROW(x, nr, alloc) \ - do { \ - if ((nr) > alloc) { \ - if (alloc_nr(alloc) < (nr)) \ - alloc = (nr); \ - else \ - alloc = alloc_nr(alloc); \ - REALLOC_ARRAY(x, alloc); \ - } \ - } while (0) - -/* - * Similar to ALLOC_GROW but handles updating of the nr value and - * zeroing the bytes of the newly-grown array elements. - * - * DO NOT USE any expression with side-effect for any of the - * arguments. - */ -#define ALLOC_GROW_BY(x, nr, increase, alloc) \ - do { \ - if (increase) { \ - size_t new_nr = nr + (increase); \ - if (new_nr < nr) \ - BUG("negative growth in ALLOC_GROW_BY"); \ - ALLOC_GROW(x, new_nr, alloc); \ - memset((x) + nr, 0, sizeof(*(x)) * (increase)); \ - nr = new_nr; \ - } \ - } while (0) - #endif diff --git a/apply.c b/apply.c index 99c2a91de7..6b9ce54f7d 100644 --- a/apply.c +++ b/apply.c @@ -9,7 +9,6 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "base85.h" #include "config.h" #include "object-store-ll.h" diff --git a/archive-tar.c b/archive-tar.c index fc06ff4c5d..704bf0612e 100644 --- a/archive-tar.c +++ b/archive-tar.c @@ -2,7 +2,6 @@ * Copyright (c) 2005, 2006 Rene Scharfe */ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "gettext.h" #include "git-zlib.h" diff --git a/archive.c b/archive.c index 1817cca9f4..ca11db185b 100644 --- a/archive.c +++ b/archive.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "convert.h" #include "environment.h" diff --git a/attr.c b/attr.c index 7d39ac4a29..e9c81b6e07 100644 --- a/attr.c +++ b/attr.c @@ -7,7 +7,6 @@ */ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "exec-cmd.h" diff --git a/builtin/blame.c b/builtin/blame.c index e811e7fbfb..9a3f9facea 100644 --- a/builtin/blame.c +++ b/builtin/blame.c @@ -6,7 +6,6 @@ */ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "color.h" #include "builtin.h" diff --git a/builtin/cat-file.c b/builtin/cat-file.c index 8ce5492d55..6266861365 100644 --- a/builtin/cat-file.c +++ b/builtin/cat-file.c @@ -5,7 +5,6 @@ */ #define USE_THE_INDEX_VARIABLE #include "builtin.h" -#include "alloc.h" #include "config.h" #include "convert.h" #include "diff.h" diff --git a/builtin/checkout--worker.c b/builtin/checkout--worker.c index c655dc4b13..6b62b5375b 100644 --- a/builtin/checkout--worker.c +++ b/builtin/checkout--worker.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "config.h" #include "entry.h" #include "gettext.h" diff --git a/builtin/config.c b/builtin/config.c index c01f136a2b..49b82b5323 100644 --- a/builtin/config.c +++ b/builtin/config.c @@ -1,6 +1,5 @@ #include "builtin.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "color.h" #include "editor.h" diff --git a/builtin/credential-cache--daemon.c b/builtin/credential-cache--daemon.c index 756c5f02ae..db8c49605c 100644 --- a/builtin/credential-cache--daemon.c +++ b/builtin/credential-cache--daemon.c @@ -1,6 +1,5 @@ #include "builtin.h" #include "abspath.h" -#include "alloc.h" #include "gettext.h" #include "object-file.h" #include "parse-options.h" diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 3ba0fe5a39..44c05ee86c 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "gettext.h" #include "hex.h" #include "object-file.h" diff --git a/builtin/fsmonitor--daemon.c b/builtin/fsmonitor--daemon.c index 74d1d6a585..0194f1e263 100644 --- a/builtin/fsmonitor--daemon.c +++ b/builtin/fsmonitor--daemon.c @@ -1,6 +1,5 @@ #include "builtin.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/builtin/grep.c b/builtin/grep.c index 72e70b3a48..c60cf2007f 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -4,7 +4,6 @@ * Copyright (c) 2006 Junio C Hamano */ #include "builtin.h" -#include "alloc.h" #include "gettext.h" #include "hex.h" #include "repository.h" diff --git a/builtin/index-pack.c b/builtin/index-pack.c index f58f9db69d..57812a276a 100644 --- a/builtin/index-pack.c +++ b/builtin/index-pack.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "config.h" #include "delta.h" #include "environment.h" diff --git a/builtin/log.c b/builtin/log.c index 486548c57e..c1cf36c38e 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -6,7 +6,6 @@ */ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/builtin/merge.c b/builtin/merge.c index 2f2f0a0b4c..059f3ecb84 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -10,7 +10,6 @@ #include "builtin.h" #include "abspath.h" #include "advice.h" -#include "alloc.h" #include "config.h" #include "editor.h" #include "environment.h" diff --git a/builtin/mktree.c b/builtin/mktree.c index 0eea810c7e..9a22d4e277 100644 --- a/builtin/mktree.c +++ b/builtin/mktree.c @@ -4,7 +4,6 @@ * Copyright (c) Junio C Hamano, 2006, 2009 */ #include "builtin.h" -#include "alloc.h" #include "gettext.h" #include "hex.h" #include "quote.h" diff --git a/builtin/mv.c b/builtin/mv.c index ae462bd7d4..fa84fcb20d 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -7,7 +7,6 @@ #include "builtin.h" #include "abspath.h" #include "advice.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/builtin/name-rev.c b/builtin/name-rev.c index c3b722b36f..c706fa3720 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 6409c07c7d..869a21b38f 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "hex.h" diff --git a/builtin/repack.c b/builtin/repack.c index 6c896c9c80..60ae514fd5 100644 --- a/builtin/repack.c +++ b/builtin/repack.c @@ -1,5 +1,4 @@ #include "builtin.h" -#include "alloc.h" #include "config.h" #include "dir.h" #include "environment.h" diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c index 4a219ea93b..161077aa79 100644 --- a/builtin/rev-parse.c +++ b/builtin/rev-parse.c @@ -6,7 +6,6 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "commit.h" #include "environment.h" diff --git a/builtin/revert.c b/builtin/revert.c index b3c6d75a1d..66d12e8c6f 100644 --- a/builtin/revert.c +++ b/builtin/revert.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "builtin.h" #include "parse-options.h" diff --git a/builtin/rm.c b/builtin/rm.c index 463eeabcea..dff819ae50 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -5,7 +5,6 @@ */ #define USE_THE_INDEX_VARIABLE #include "builtin.h" -#include "alloc.h" #include "advice.h" #include "config.h" #include "lockfile.h" diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index baf6ff88c3..e22cf4e4ee 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -1,7 +1,6 @@ #define USE_THE_INDEX_VARIABLE #include "builtin.h" #include "abspath.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "hex.h" diff --git a/bulk-checkin.c b/bulk-checkin.c index fec6816259..73bff3a23d 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -2,7 +2,6 @@ * Copyright (c) 2011, Google Inc. */ #include "git-compat-util.h" -#include "alloc.h" #include "bulk-checkin.h" #include "environment.h" #include "gettext.h" diff --git a/cache-tree.c b/cache-tree.c index 84d7491420..641427ed41 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "environment.h" #include "hex.h" #include "lockfile.h" diff --git a/chunk-format.c b/chunk-format.c index e7d613c907..140dfa0dcc 100644 --- a/chunk-format.c +++ b/chunk-format.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "chunk-format.h" #include "csum-file.h" #include "gettext.h" diff --git a/commit-reach.c b/commit-reach.c index 70bde8af05..812bc6bf92 100644 --- a/commit-reach.c +++ b/commit-reach.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "commit.h" #include "commit-graph.h" #include "decorate.h" diff --git a/common.h b/common.h index e3b673847d..b0c68eb2a2 100644 --- a/common.h +++ b/common.h @@ -199,6 +199,81 @@ static inline int cast_size_t_to_int(size_t a) */ #define FREE_AND_NULL(p) do { free(p); (p) = NULL; } while (0) +#define alloc_nr(x) (((x)+16)*3/2) + +/** + * Dynamically growing an array using realloc() is error prone and boring. + * + * Define your array with: + * + * - a pointer (`item`) that points at the array, initialized to `NULL` + * (although please name the variable based on its contents, not on its + * type); + * + * - an integer variable (`alloc`) that keeps track of how big the current + * allocation is, initialized to `0`; + * + * - another integer variable (`nr`) to keep track of how many elements the + * array currently has, initialized to `0`. + * + * Then before adding `n`th element to the item, call `ALLOC_GROW(item, n, + * alloc)`. This ensures that the array can hold at least `n` elements by + * calling `realloc(3)` and adjusting `alloc` variable. + * + * ------------ + * sometype *item; + * size_t nr; + * size_t alloc + * + * for (i = 0; i < nr; i++) + * if (we like item[i] already) + * return; + * + * // we did not like any existing one, so add one + * ALLOC_GROW(item, nr + 1, alloc); + * item[nr++] = value you like; + * ------------ + * + * You are responsible for updating the `nr` variable. + * + * If you need to specify the number of elements to allocate explicitly + * then use the macro `REALLOC_ARRAY(item, alloc)` instead of `ALLOC_GROW`. + * + * Consider using ALLOC_GROW_BY instead of ALLOC_GROW as it has some + * added niceties. + * + * DO NOT USE any expression with side-effect for 'x', 'nr', or 'alloc'. + */ +#define ALLOC_GROW(x, nr, alloc) \ + do { \ + if ((nr) > alloc) { \ + if (alloc_nr(alloc) < (nr)) \ + alloc = (nr); \ + else \ + alloc = alloc_nr(alloc); \ + REALLOC_ARRAY(x, alloc); \ + } \ + } while (0) + +/* + * Similar to ALLOC_GROW but handles updating of the nr value and + * zeroing the bytes of the newly-grown array elements. + * + * DO NOT USE any expression with side-effect for any of the + * arguments. + */ +#define ALLOC_GROW_BY(x, nr, increase, alloc) \ + do { \ + if (increase) { \ + size_t new_nr = nr + (increase); \ + if (new_nr < nr) \ + BUG("negative growth in ALLOC_GROW_BY"); \ + ALLOC_GROW(x, new_nr, alloc); \ + memset((x) + nr, 0, sizeof(*(x)) * (increase)); \ + nr = new_nr; \ + } \ + } while (0) + #define ALLOC_ARRAY(x, alloc) (x) = xmalloc(st_mult(sizeof(*(x)), (alloc))) #define CALLOC_ARRAY(x, alloc) (x) = xcalloc((alloc), sizeof(*(x))) #define REALLOC_ARRAY(x, alloc) (x) = xrealloc((x), st_mult(sizeof(*(x)), (alloc))) diff --git a/config.c b/config.c index cc97c18141..09851a6909 100644 --- a/config.c +++ b/config.c @@ -8,7 +8,6 @@ #include "git-compat-util.h" #include "abspath.h" #include "advice.h" -#include "alloc.h" #include "date.h" #include "branch.h" #include "config.h" diff --git a/daemon.c b/daemon.c index 3722edf46c..1edc9a8510 100644 --- a/daemon.c +++ b/daemon.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "path.h" diff --git a/delta-islands.c b/delta-islands.c index c824a5f6a4..332f0f7c45 100644 --- a/delta-islands.c +++ b/delta-islands.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "attr.h" #include "object.h" #include "blob.h" diff --git a/diff.c b/diff.c index 10c8597ba0..8709d87b86 100644 --- a/diff.c +++ b/diff.c @@ -3,7 +3,6 @@ */ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "base85.h" #include "config.h" #include "convert.h" diff --git a/diffcore-rename.c b/diffcore-rename.c index 926b554bd5..5a6e2bcac7 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -3,7 +3,6 @@ * Copyright (C) 2005 Junio C Hamano */ #include "git-compat-util.h" -#include "alloc.h" #include "diff.h" #include "diffcore.h" #include "object-store-ll.h" diff --git a/dir-iterator.c b/dir-iterator.c index fb7c47f0e8..278b04243a 100644 --- a/dir-iterator.c +++ b/dir-iterator.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "dir.h" #include "iterator.h" #include "dir-iterator.h" diff --git a/dir.c b/dir.c index d270a1be36..c9dc69fc24 100644 --- a/dir.c +++ b/dir.c @@ -7,7 +7,6 @@ */ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "convert.h" #include "dir.h" diff --git a/ewah/bitmap.c b/ewah/bitmap.c index 12d6aa398e..7b525b1ecd 100644 --- a/ewah/bitmap.c +++ b/ewah/bitmap.c @@ -17,7 +17,6 @@ * along with this program; if not, see . */ #include "git-compat-util.h" -#include "alloc.h" #include "ewok.h" #define EWAH_MASK(x) ((eword_t)1 << (x % BITS_IN_EWORD)) diff --git a/ewah/ewah_bitmap.c b/ewah/ewah_bitmap.c index c6d4ffc87c..8785cbc54a 100644 --- a/ewah/ewah_bitmap.c +++ b/ewah/ewah_bitmap.c @@ -17,7 +17,6 @@ * along with this program; if not, see . */ #include "git-compat-util.h" -#include "alloc.h" #include "ewok.h" #include "ewok_rlw.h" diff --git a/fetch-pack.c b/fetch-pack.c index 84a24ff9b1..6198f3adaf 100644 --- a/fetch-pack.c +++ b/fetch-pack.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "repository.h" #include "config.h" #include "date.h" diff --git a/fmt-merge-msg.c b/fmt-merge-msg.c index ac9c1b9c6c..ff8884eecd 100644 --- a/fmt-merge-msg.c +++ b/fmt-merge-msg.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "refs.h" diff --git a/fsck.c b/fsck.c index a219d6f2c0..2035c4e00b 100644 --- a/fsck.c +++ b/fsck.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "date.h" #include "dir.h" #include "hex.h" diff --git a/help.c b/help.c index 5d7637dce9..c81d43a5fa 100644 --- a/help.c +++ b/help.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "builtin.h" #include "exec-cmd.h" diff --git a/http-backend.c b/http-backend.c index 01d0405597..ff07b87e64 100644 --- a/http-backend.c +++ b/http-backend.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "git-zlib.h" diff --git a/line-log.c b/line-log.c index 2eff914bf3..790ab73212 100644 --- a/line-log.c +++ b/line-log.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "line-range.h" #include "hex.h" #include "tag.h" diff --git a/list-objects-filter-options.c b/list-objects-filter-options.c index 2a3b7881af..8a08b7af49 100644 --- a/list-objects-filter-options.c +++ b/list-objects-filter-options.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "commit.h" #include "config.h" #include "gettext.h" diff --git a/list-objects-filter.c b/list-objects-filter.c index e075a66c99..9327ccd505 100644 --- a/list-objects-filter.c +++ b/list-objects-filter.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "dir.h" #include "gettext.h" #include "hex.h" diff --git a/midx.c b/midx.c index db459e448b..3a16acabbc 100644 --- a/midx.c +++ b/midx.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "csum-file.h" #include "dir.h" diff --git a/object-file.c b/object-file.c index 527b740018..5ebe1b00c5 100644 --- a/object-file.c +++ b/object-file.c @@ -8,7 +8,6 @@ */ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "convert.h" #include "environment.h" diff --git a/oid-array.c b/oid-array.c index e8228c777b..8e4717746c 100644 --- a/oid-array.c +++ b/oid-array.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "oid-array.h" #include "hash-lookup.h" diff --git a/oidtree.c b/oidtree.c index 7d57b7b19e..daef175dc7 100644 --- a/oidtree.c +++ b/oidtree.c @@ -4,7 +4,6 @@ */ #include "git-compat-util.h" #include "oidtree.h" -#include "alloc.h" #include "hash.h" struct oidtree_iter_data { diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index d86f4e739a..f6757c3cbf 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "hex.h" diff --git a/pack-bitmap.c b/pack-bitmap.c index 07dda2b22e..1ff813a5ba 100644 --- a/pack-bitmap.c +++ b/pack-bitmap.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "commit.h" #include "gettext.h" #include "hex.h" diff --git a/pack-objects.c b/pack-objects.c index ccab09fe65..1b8052bece 100644 --- a/pack-objects.c +++ b/pack-objects.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "object.h" #include "pack.h" #include "pack-objects.h" diff --git a/packfile.c b/packfile.c index 7683a6dbea..0f80c8ba1f 100644 --- a/packfile.c +++ b/packfile.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "hex.h" diff --git a/parallel-checkout.c b/parallel-checkout.c index 8637723461..b5a714c711 100644 --- a/parallel-checkout.c +++ b/parallel-checkout.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "entry.h" #include "gettext.h" diff --git a/pretty.c b/pretty.c index d4bc4b0286..c417dcbf72 100644 --- a/pretty.c +++ b/pretty.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "commit.h" #include "environment.h" diff --git a/prio-queue.c b/prio-queue.c index dc2476be53..450775a374 100644 --- a/prio-queue.c +++ b/prio-queue.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "prio-queue.h" static inline int compare(struct prio_queue *queue, int i, int j) diff --git a/quote.c b/quote.c index 43c739671e..3c05194496 100644 --- a/quote.c +++ b/quote.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "path.h" #include "quote.h" #include "strbuf.h" diff --git a/read-cache.c b/read-cache.c index 140b4f96a0..53d71134e2 100644 --- a/read-cache.c +++ b/read-cache.c @@ -4,7 +4,6 @@ * Copyright (C) Linus Torvalds, 2005 */ #include "git-compat-util.h" -#include "alloc.h" #include "bulk-checkin.h" #include "config.h" #include "date.h" diff --git a/ref-filter.c b/ref-filter.c index 771fa6c133..33d5576968 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "gpg-interface.h" diff --git a/reflog-walk.c b/reflog-walk.c index d337e64431..d216f6f966 100644 --- a/reflog-walk.c +++ b/reflog-walk.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "commit.h" #include "refs.h" #include "diff.h" diff --git a/refs.c b/refs.c index 1cba800add..bf6624adff 100644 --- a/refs.c +++ b/refs.c @@ -4,7 +4,6 @@ #include "git-compat-util.h" #include "advice.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "hashmap.h" diff --git a/refspec.c b/refspec.c index 57f6c2aaf9..d60932f4de 100644 --- a/refspec.c +++ b/refspec.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "gettext.h" #include "hash.h" #include "hex.h" diff --git a/remote-curl.c b/remote-curl.c index acf7b2bb40..8a976a0253 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/remote.c b/remote.c index 6538b6037d..e5e165de1c 100644 --- a/remote.c +++ b/remote.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/rerere.c b/rerere.c index 4227c9612a..7070f75014 100644 --- a/rerere.c +++ b/rerere.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "config.h" #include "copy.h" #include "gettext.h" diff --git a/revision.c b/revision.c index c53e9f84ae..fa219afaad 100644 --- a/revision.c +++ b/revision.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/sequencer.c b/sequencer.c index 5891466d91..8f18001dab 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1,7 +1,6 @@ #include "git-compat-util.h" #include "abspath.h" #include "advice.h" -#include "alloc.h" #include "config.h" #include "copy.h" #include "environment.h" diff --git a/server-info.c b/server-info.c index f350713ecf..e2fe0f9143 100644 --- a/server-info.c +++ b/server-info.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "dir.h" #include "environment.h" #include "hex.h" diff --git a/shallow.c b/shallow.c index 2fad3504b7..5413719fd4 100644 --- a/shallow.c +++ b/shallow.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "hex.h" #include "repository.h" #include "tempfile.h" diff --git a/sigchain.c b/sigchain.c index ee778c0580..66123bdbab 100644 --- a/sigchain.c +++ b/sigchain.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "sigchain.h" #define SIGCHAIN_MAX_SIGNALS 32 diff --git a/sparse-index.c b/sparse-index.c index 90d0462256..1fdb07a9e6 100644 --- a/sparse-index.c +++ b/sparse-index.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "name-hash.h" diff --git a/split-index.c b/split-index.c index 0ee3865a55..8c38687c04 100644 --- a/split-index.c +++ b/split-index.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "gettext.h" #include "hash.h" #include "mem-pool.h" diff --git a/strbuf.c b/strbuf.c index 77e205d0be..8f64beb2a1 100644 --- a/strbuf.c +++ b/strbuf.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "gettext.h" #include "hex.h" #include "path.h" diff --git a/string-list.c b/string-list.c index 0f8ac117fd..954569f381 100644 --- a/string-list.c +++ b/string-list.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "string-list.h" -#include "alloc.h" void string_list_init_nodup(struct string_list *list) { diff --git a/strvec.c b/strvec.c index 17d54b6c3b..89dc9e7e75 100644 --- a/strvec.c +++ b/strvec.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "strvec.h" -#include "alloc.h" #include "hex.h" #include "strbuf.h" diff --git a/submodule-config.c b/submodule-config.c index 8a247b3be0..d39d365f1b 100644 --- a/submodule-config.c +++ b/submodule-config.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "dir.h" #include "environment.h" #include "gettext.h" diff --git a/submodule.c b/submodule.c index cba36d6080..e7a907bc25 100644 --- a/submodule.c +++ b/submodule.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "repository.h" #include "config.h" #include "submodule-config.h" diff --git a/t/helper/test-reach.c b/t/helper/test-reach.c index ef58f10c2d..3e173399a0 100644 --- a/t/helper/test-reach.c +++ b/t/helper/test-reach.c @@ -1,5 +1,4 @@ #include "test-tool.h" -#include "alloc.h" #include "commit.h" #include "commit-reach.h" #include "config.h" diff --git a/trace2/tr2_tls.c b/trace2/tr2_tls.c index 9f46ae12f5..601c9e5036 100644 --- a/trace2/tr2_tls.c +++ b/trace2/tr2_tls.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "thread-utils.h" #include "trace.h" #include "trace2/tr2_tls.h" diff --git a/trailer.c b/trailer.c index a2c3ed6f28..2170e01f6a 100644 --- a/trailer.c +++ b/trailer.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "gettext.h" diff --git a/transport.c b/transport.c index 0a5794a944..219af8fd50 100644 --- a/transport.c +++ b/transport.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "advice.h" -#include "alloc.h" #include "config.h" #include "environment.h" #include "hex.h" diff --git a/tree-walk.c b/tree-walk.c index 42ed86ef58..6c07913f3f 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "tree-walk.h" -#include "alloc.h" #include "dir.h" #include "gettext.h" #include "hex.h" diff --git a/userdiff.c b/userdiff.c index 664c7c1402..e399543823 100644 --- a/userdiff.c +++ b/userdiff.c @@ -1,5 +1,4 @@ #include "git-compat-util.h" -#include "alloc.h" #include "config.h" #include "userdiff.h" #include "attr.h" diff --git a/worktree.c b/worktree.c index 2018c127ca..7410dce811 100644 --- a/worktree.c +++ b/worktree.c @@ -1,6 +1,5 @@ #include "git-compat-util.h" #include "abspath.h" -#include "alloc.h" #include "environment.h" #include "gettext.h" #include "path.h"