From: Junio C Hamano Date: Wed, 24 Feb 2010 15:58:17 GMT Subject: Re: [PATCHv4 1/6] environment: static list of repo-local env vars Message-ID: <7vhbp64odi.fsf@alter.siamese.dyndns.org> In-Reply-To: <1266996196-25978-2-git-send-email-giuseppe.bilotta@gmail.com> Giuseppe Bilotta writes: > +/* Repository-local GIT_* environment variables */ > +const char *const local_repo_env[] = { > + ALTERNATE_DB_ENVIRONMENT, > + CONFIG_ENVIRONMENT, > + DB_ENVIRONMENT, > + GIT_DIR_ENVIRONMENT, > + GIT_WORK_TREE_ENVIRONMENT, > + GRAFT_ENVIRONMENT, > + INDEX_ENVIRONMENT, > + NO_REPLACE_OBJECTS_ENVIRONMENT, > + NULL > +}; > + > +const unsigned int local_repo_env_size = ARRAY_SIZE(local_repo_env); This does not look very useful for two reasons. - It counts the NULL at the tail, so the number is one-off; you cannot say for (i = 0; i < local_repo_env_size; i++) do_something_to(local_repo_env[i]); - local_repo_env_size is not a compile time constant, so you cannot do: const char *env[local_repo_env_size + 20]; memcpy(env, local_repo_env, sizeof(env[0]) * local_repo_env_size); for (i = local_repo_env_size; i < ARRAY_SIZE(env); i++) add_more_to(env + i, ...);