Revision 865406bc5426d5196935e37a3a5fde9c843c3e96 authored by Philip Oakley on 29 July 2019, 20:08:03 UTC, committed by Junio C Hamano on 29 July 2019, 21:51:42 UTC
Since 4b623d8 (MSVC: link in invalidcontinue.obj for better POSIX
compatibility, 2014-03-29), invalidcontinue.obj is linked in the MSVC
build, but it was not parsed correctly by the buildsystem. Ignore it, as
it is known to Visual Studio and will be handled elsewhere.

Also only substitute filenames ending with .o when generating the
source .c filename, otherwise we would start to expect .cbj files to
generate .obj files (which are not generated by our build)...

In the future there may be source files that produce .obj files
so keep the two issues (.obj files with & without source files)
separate.

Signed-off-by: Philip Oakley <philipoakley@iee.org>
Signed-off-by: Duncan Smart <duncan.smart@gmail.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent 158471d
Raw File
chdir-notify.h
#ifndef CHDIR_NOTIFY_H
#define CHDIR_NOTIFY_H

/*
 * An API to let code "subscribe" to changes to the current working directory.
 * The general idea is that some code asks to be notified when the working
 * directory changes, and other code that calls chdir uses a special wrapper
 * that notifies everyone.
 */

/*
 * Callers who need to know about changes can do:
 *
 *   void foo(const char *old_path, const char *new_path, void *data)
 *   {
 *	warning("switched from %s to %s!", old_path, new_path);
 *   }
 *   ...
 *   chdir_notify_register("description", foo, data);
 *
 * In practice most callers will want to move a relative path to the new root;
 * they can use the reparent_relative_path() helper for that. If that's all
 * you're doing, you can also use the convenience function:
 *
 *   chdir_notify_reparent("description", &my_path);
 *
 * Whenever a chdir event occurs, that will update my_path (if it's relative)
 * to adjust for the new cwd by freeing any existing string and allocating a
 * new one.
 *
 * Registered functions are called in the order in which they were added. Note
 * that there's currently no way to remove a function, so make sure that the
 * data parameter remains valid for the rest of the program.
 *
 * The "name" argument is used only for printing trace output from
 * $GIT_TRACE_SETUP. It may be NULL, but if non-NULL should point to
 * storage which lasts as long as the registration is active.
 */
typedef void (*chdir_notify_callback)(const char *name,
				      const char *old_cwd,
				      const char *new_cwd,
				      void *data);
void chdir_notify_register(const char *name, chdir_notify_callback cb, void *data);
void chdir_notify_reparent(const char *name, char **path);

/*
 *
 * Callers that want to chdir:
 *
 *   chdir_notify(new_path);
 *
 * to switch to the new path and notify any callbacks.
 *
 * Note that you don't need to chdir_notify() if you're just temporarily moving
 * to a directory and back, as long as you don't call any subscribed code in
 * between (but it should be safe to do so if you're unsure).
 */
int chdir_notify(const char *new_cwd);

/*
 * Reparent a relative path from old_root to new_root. For example:
 *
 *   reparent_relative_path("/a", "/a/b", "b/rel");
 *
 * would return the (newly allocated) string "rel". Note that we may return an
 * absolute path in some cases (e.g., if the resulting path is not inside
 * new_cwd).
 */
char *reparent_relative_path(const char *old_cwd,
			     const char *new_cwd,
			     const char *path);

#endif /* CHDIR_NOTIFY_H */
back to top