这篇教程C++ unlink_or_warn函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中unlink_or_warn函数的典型用法代码示例。如果您正苦于以下问题:C++ unlink_or_warn函数的具体用法?C++ unlink_or_warn怎么用?C++ unlink_or_warn使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了unlink_or_warn函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: runstatic int run(int argc, char *argv[]) { int r, k; if (argc != 2) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "This program requires one argument."); log_setup_service(); umask(0022); mac_selinux_init(); if (streq(argv[1], "start")) { r = unlink_or_warn("/run/nologin"); k = unlink_or_warn("/etc/nologin"); if (r < 0) return r; return k; } else if (streq(argv[1], "stop")) return create_shutdown_run_nologin_or_warn(); return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown verb '%s'.", argv[1]);}
开发者ID:Keruspe,项目名称:systemd,代码行数:25,
示例2: check_expected_revsstatic void check_expected_revs(const char **revs, int rev_nr){ int i; for (i = 0; i < rev_nr; i++) { if (!is_expected_rev(revs[i])) { unlink_or_warn(git_path_bisect_ancestors_ok()); unlink_or_warn(git_path_bisect_expected_rev()); } }}
开发者ID:bk2204,项目名称:git,代码行数:11,
示例3: prune_objectstatic int prune_object(const struct object_id *oid, const char *fullpath, void *data){ struct stat st; /* * Do we know about this object? * It must have been reachable */ if (lookup_object(oid->hash)) return 0; if (lstat(fullpath, &st)) { /* report errors, but do not stop pruning */ error("Could not stat '%s'", fullpath); return 0; } if (st.st_mtime > expire) return 0; if (show_only || verbose) { enum object_type type = sha1_object_info(oid->hash, NULL); printf("%s %s/n", oid_to_hex(oid), (type > 0) ? typename(type) : "unknown"); } if (!show_only) unlink_or_warn(fullpath); return 0;}
开发者ID:Litttle-butterfly,项目名称:git,代码行数:28,
示例4: prune_dirstatic void prune_dir(int i, DIR *dir, char *pathname, int len, int opts){ struct dirent *de; char hex[40]; sprintf(hex, "%02x", i); while ((de = readdir(dir)) != NULL) { unsigned char sha1[20]; if (strlen(de->d_name) != 38) continue; memcpy(hex+2, de->d_name, 38); if (get_sha1_hex(hex, sha1)) continue; if (!has_sha1_pack(sha1)) continue; memcpy(pathname + len, de->d_name, 38); if (opts & DRY_RUN) printf("rm -f %s/n", pathname); else unlink_or_warn(pathname); display_progress(progress, i + 1); } pathname[len] = 0; rmdir(pathname);}
开发者ID:julesbowden,项目名称:git,代码行数:25,
示例5: fetch_pack_setupstruct ref *fetch_pack(struct fetch_pack_args *my_args, int fd[], struct child_process *conn, const struct ref *ref, const char *dest, int nr_heads, char **heads, char **pack_lockfile){ struct stat st; struct ref *ref_cpy; fetch_pack_setup(); if (&args != my_args) memcpy(&args, my_args, sizeof(args)); if (args.depth > 0) { if (stat(git_path("shallow"), &st)) st.st_mtime = 0; } if (heads && nr_heads) nr_heads = remove_duplicates(nr_heads, heads); if (!ref) { packet_flush(fd[1]); die("no matching remote head"); } ref_cpy = do_fetch_pack(fd, ref, nr_heads, heads, pack_lockfile); if (args.depth > 0) { struct cache_time mtime; struct strbuf sb = STRBUF_INIT; char *shallow = git_path("shallow"); int fd; mtime.sec = st.st_mtime; mtime.nsec = ST_MTIME_NSEC(st); if (stat(shallow, &st)) { if (mtime.sec) die("shallow file was removed during fetch"); } else if (st.st_mtime != mtime.sec#ifdef USE_NSEC || ST_MTIME_NSEC(st) != mtime.nsec#endif ) die("shallow file was changed during fetch"); fd = hold_lock_file_for_update(&lock, shallow, LOCK_DIE_ON_ERROR); if (!write_shallow_commits(&sb, 0) || write_in_full(fd, sb.buf, sb.len) != sb.len) { unlink_or_warn(shallow); rollback_lock_file(&lock); } else { commit_lock_file(&lock); } strbuf_release(&sb); } reprepare_packed_git(); return ref_cpy;}
开发者ID:CinsonChen,项目名称:git,代码行数:60,
示例6: transport_unlock_packvoid transport_unlock_pack(struct transport *transport){ if (transport->pack_lockfile) { unlink_or_warn(transport->pack_lockfile); FREE_AND_NULL(transport->pack_lockfile); }}
开发者ID:MichaelBlume,项目名称:git,代码行数:7,
示例7: fetch_pack_setupstruct ref *fetch_pack(struct fetch_pack_args *args, int fd[], struct child_process *conn, const struct ref *ref, const char *dest, struct ref **sought, int nr_sought, char **pack_lockfile){ struct ref *ref_cpy; fetch_pack_setup(); if (nr_sought) nr_sought = remove_duplicates_in_refs(sought, nr_sought); if (!ref) { packet_flush(fd[1]); die("no matching remote head"); } ref_cpy = do_fetch_pack(args, fd, ref, sought, nr_sought, pack_lockfile); if (args->depth > 0 && alternate_shallow_file) { if (*alternate_shallow_file == '/0') { /* --unshallow */ unlink_or_warn(git_path("shallow")); rollback_lock_file(&shallow_lock); } else commit_lock_file(&shallow_lock); } reprepare_packed_git(); return ref_cpy;}
开发者ID:BenBergman,项目名称:git,代码行数:30,
示例8: convert_graft_filestatic int convert_graft_file(int force){ const char *graft_file = get_graft_file(); FILE *fp = fopen_or_warn(graft_file, "r"); struct strbuf buf = STRBUF_INIT, err = STRBUF_INIT; struct argv_array args = ARGV_ARRAY_INIT; if (!fp) return -1; while (strbuf_getline(&buf, fp) != EOF) { if (*buf.buf == '#') continue; argv_array_split(&args, buf.buf); if (args.argc && create_graft(args.argc, args.argv, force, 1)) strbuf_addf(&err, "/n/t%s", buf.buf); argv_array_clear(&args); } fclose(fp); strbuf_release(&buf); if (!err.len) return unlink_or_warn(graft_file); warning(_("could not convert the following graft(s):/n%s"), err.buf); strbuf_release(&err); return -1;}
开发者ID:PEPE-coin,项目名称:git,代码行数:31,
示例9: clean_pack_garbagestatic void clean_pack_garbage(void){ int i; for (i = 0; i < pack_garbage.nr; i++) unlink_or_warn(pack_garbage.items[i].string); string_list_clear(&pack_garbage, 0);}
开发者ID:MichaelBlume,项目名称:git,代码行数:7,
示例10: ll_ext_merge/* * User defined low-level merge driver support. */static int ll_ext_merge(const struct ll_merge_driver *fn, mmbuffer_t *result, const char *path, mmfile_t *orig, const char *orig_name, mmfile_t *src1, const char *name1, mmfile_t *src2, const char *name2, const struct ll_merge_options *opts, int marker_size){ char temp[4][50]; struct strbuf cmd = STRBUF_INIT; struct strbuf_expand_dict_entry dict[6]; struct strbuf path_sq = STRBUF_INIT; const char *args[] = { NULL, NULL }; int status, fd, i; struct stat st; assert(opts); sq_quote_buf(&path_sq, path); dict[0].placeholder = "O"; dict[0].value = temp[0]; dict[1].placeholder = "A"; dict[1].value = temp[1]; dict[2].placeholder = "B"; dict[2].value = temp[2]; dict[3].placeholder = "L"; dict[3].value = temp[3]; dict[4].placeholder = "P"; dict[4].value = path_sq.buf; dict[5].placeholder = NULL; dict[5].value = NULL; if (fn->cmdline == NULL) die("custom merge driver %s lacks command line.", fn->name); result->ptr = NULL; result->size = 0; create_temp(orig, temp[0], sizeof(temp[0])); create_temp(src1, temp[1], sizeof(temp[1])); create_temp(src2, temp[2], sizeof(temp[2])); xsnprintf(temp[3], sizeof(temp[3]), "%d", marker_size); strbuf_expand(&cmd, fn->cmdline, strbuf_expand_dict_cb, &dict); args[0] = cmd.buf; status = run_command_v_opt(args, RUN_USING_SHELL); fd = open(temp[1], O_RDONLY); if (fd < 0) goto bad; if (fstat(fd, &st)) goto close_bad; result->size = st.st_size; result->ptr = xmallocz(result->size); if (read_in_full(fd, result->ptr, result->size) != result->size) { FREE_AND_NULL(result->ptr); result->size = 0; } close_bad: close(fd); bad: for (i = 0; i < 3; i++) unlink_or_warn(temp[i]); strbuf_release(&cmd); strbuf_release(&path_sq); return status;}
开发者ID:Nowher2,项目名称:git,代码行数:63,
示例11: transport_unlock_packvoid transport_unlock_pack(struct transport *transport){ if (transport->pack_lockfile) { unlink_or_warn(transport->pack_lockfile); free(transport->pack_lockfile); transport->pack_lockfile = NULL; }}
开发者ID:ruoso,项目名称:git,代码行数:8,
示例12: free_note_datastatic void free_note_data(struct note_data *d){ if (d->edit_path) { unlink_or_warn(d->edit_path); free(d->edit_path); } strbuf_release(&d->buf);}
开发者ID:kylebarney,项目名称:git,代码行数:8,
示例13: prune_ref/* make sure nobody touched the ref, and unlink */static void prune_ref(struct ref_to_prune *r){ struct ref_lock *lock = lock_ref_sha1(r->name + 5, r->sha1); if (lock) { unlink_or_warn(git_path("%s", r->name)); unlock_ref(lock); }}
开发者ID:AndyA,项目名称:git-andya,代码行数:10,
示例14: ll_ext_merge/* * User defined low-level merge driver support. */static int ll_ext_merge(const struct ll_merge_driver *fn, mmbuffer_t *result, const char *path, mmfile_t *orig, mmfile_t *src1, const char *name1, mmfile_t *src2, const char *name2, int virtual_ancestor){ char temp[3][50]; struct strbuf cmd = STRBUF_INIT; struct strbuf_expand_dict_entry dict[] = { { "O", temp[0] }, { "A", temp[1] }, { "B", temp[2] }, { NULL } }; const char *args[] = { "sh", "-c", NULL, NULL }; int status, fd, i; struct stat st; if (fn->cmdline == NULL) die("custom merge driver %s lacks command line.", fn->name); result->ptr = NULL; result->size = 0; create_temp(orig, temp[0]); create_temp(src1, temp[1]); create_temp(src2, temp[2]); strbuf_expand(&cmd, fn->cmdline, strbuf_expand_dict_cb, &dict); args[2] = cmd.buf; status = run_command_v_opt(args, 0); if (status < -ERR_RUN_COMMAND_FORK) ; /* failure in run-command */ else status = -status; fd = open(temp[1], O_RDONLY); if (fd < 0) goto bad; if (fstat(fd, &st)) goto close_bad; result->size = st.st_size; result->ptr = xmalloc(result->size + 1); if (read_in_full(fd, result->ptr, result->size) != result->size) { free(result->ptr); result->ptr = NULL; result->size = 0; } close_bad: close(fd); bad: for (i = 0; i < 3; i++) unlink_or_warn(temp[i]); strbuf_release(&cmd); return status;}
开发者ID:AndyA,项目名称:git-andya,代码行数:60,
示例15: rollback_lock_filevoid rollback_lock_file(struct lock_file *lk){ if (lk->filename[0]) { if (lk->fd >= 0) close(lk->fd); unlink_or_warn(lk->filename); } lk->filename[0] = 0;}
开发者ID:CookieChen,项目名称:git,代码行数:9,
示例16: verify_signed_buffer/* * Run "gpg" to see if the payload matches the detached signature. * gpg_output, when set, receives the diagnostic output from GPG. * gpg_status, when set, receives the status output from GPG. */int verify_signed_buffer(const char *payload, size_t payload_size, const char *signature, size_t signature_size, struct strbuf *gpg_output, struct strbuf *gpg_status){ struct child_process gpg = CHILD_PROCESS_INIT; const char *args_gpg[] = {NULL, "--status-fd=1", "--verify", "FILE", "-", NULL}; char path[PATH_MAX]; int fd, ret; struct strbuf buf = STRBUF_INIT; struct strbuf *pbuf = &buf; args_gpg[0] = gpg_program; fd = git_mkstemp(path, PATH_MAX, ".git_vtag_tmpXXXXXX"); if (fd < 0) return error(_("could not create temporary file '%s': %s"), path, strerror(errno)); if (write_in_full(fd, signature, signature_size) < 0) return error(_("failed writing detached signature to '%s': %s"), path, strerror(errno)); close(fd); gpg.argv = args_gpg; gpg.in = -1; gpg.out = -1; if (gpg_output) gpg.err = -1; args_gpg[3] = path; if (start_command(&gpg)) { unlink(path); return error(_("could not run gpg.")); } sigchain_push(SIGPIPE, SIG_IGN); write_in_full(gpg.in, payload, payload_size); close(gpg.in); if (gpg_output) { strbuf_read(gpg_output, gpg.err, 0); close(gpg.err); } if (gpg_status) pbuf = gpg_status; strbuf_read(pbuf, gpg.out, 0); close(gpg.out); ret = finish_command(&gpg); sigchain_pop(SIGPIPE); unlink_or_warn(path); ret |= !strstr(pbuf->buf, "/n[GNUPG:] GOODSIG "); strbuf_release(&buf); /* no matter it was used or not */ return ret;}
开发者ID:1742314348,项目名称:git,代码行数:60,
示例17: ll_ext_merge/* * User defined low-level merge driver support. */static int ll_ext_merge(const struct ll_merge_driver *fn, mmbuffer_t *result, const char *path, mmfile_t *orig, mmfile_t *src1, const char *name1, mmfile_t *src2, const char *name2, int flag, int marker_size){ char temp[4][50]; struct strbuf cmd = STRBUF_INIT; struct strbuf_expand_dict_entry dict[] = { { "O", temp[0] }, { "A", temp[1] }, { "B", temp[2] }, { "L", temp[3] }, { NULL } }; const char *args[] = { NULL, NULL }; int status, fd, i; struct stat st; if (fn->cmdline == NULL) die("custom merge driver %s lacks command line.", fn->name); result->ptr = NULL; result->size = 0; create_temp(orig, temp[0]); create_temp(src1, temp[1]); create_temp(src2, temp[2]); sprintf(temp[3], "%d", marker_size); strbuf_expand(&cmd, fn->cmdline, strbuf_expand_dict_cb, &dict); args[0] = cmd.buf; status = run_command_v_opt(args, RUN_USING_SHELL); fd = open(temp[1], O_RDONLY); if (fd < 0) goto bad; if (fstat(fd, &st)) goto close_bad; result->size = st.st_size; result->ptr = xmalloc(result->size + 1); if (read_in_full(fd, result->ptr, result->size) != result->size) { free(result->ptr); result->ptr = NULL; result->size = 0; } close_bad: close(fd); bad: for (i = 0; i < 3; i++) unlink_or_warn(temp[i]); strbuf_release(&cmd); return status;}
开发者ID:sanj,项目名称:git,代码行数:58,
示例18: rerere_clearvoid rerere_clear(struct string_list *merge_rr){ int i; for (i = 0; i < merge_rr->nr; i++) { const char *name = (const char *)merge_rr->items[i].util; if (!has_rerere_resolution(name)) unlink_rr_item(name); } unlink_or_warn(git_path("MERGE_RR"));}
开发者ID:AViscatanius,项目名称:git,代码行数:11,
示例19: rollback_lock_filevoid rollback_lock_file(struct lock_file *lk){ if (!lk->active) return; if (!close_lock_file(lk)) { unlink_or_warn(lk->filename.buf); lk->active = 0; strbuf_reset(&lk->filename); }}
开发者ID:86joca,项目名称:git,代码行数:11,
示例20: prune_tmp_filestatic int prune_tmp_file(const char *fullpath){ struct stat st; if (lstat(fullpath, &st)) return error("Could not stat '%s'", fullpath); if (st.st_mtime > expire) return 0; if (show_only || verbose) printf("Removing stale temporary file %s/n", fullpath); if (!show_only) unlink_or_warn(fullpath); return 0;}
开发者ID:Litttle-butterfly,项目名称:git,代码行数:13,
示例21: prune_tmp_objectstatic int prune_tmp_object(const char *path, const char *filename){ const char *fullpath = mkpath("%s/%s", path, filename); struct stat st; if (lstat(fullpath, &st)) return error("Could not stat '%s'", fullpath); if (st.st_mtime > expire) return 0; printf("Removing stale temporary file %s/n", fullpath); if (!show_only) unlink_or_warn(fullpath); return 0;}
开发者ID:Open-source-projects-2014,项目名称:git,代码行数:13,
示例22: remove_lock_filestatic void remove_lock_file(void){ pid_t me = getpid(); while (lock_file_list) { if (lock_file_list->owner == me && lock_file_list->filename[0]) { if (lock_file_list->fd >= 0) close(lock_file_list->fd); unlink_or_warn(lock_file_list->filename); } lock_file_list = lock_file_list->next; }}
开发者ID:CookieChen,项目名称:git,代码行数:14,
示例23: prune_objectstatic int prune_object(const struct object_id *oid, const char *path, void *data){ int *opts = data; if (!has_sha1_pack(oid->hash)) return 0; if (*opts & PRUNE_PACKED_DRY_RUN) printf("rm -f %s/n", path); else unlink_or_warn(path); return 0;}
开发者ID:KarthikNayak,项目名称:git,代码行数:14,
示例24: delete_refint delete_ref(const char *refname, const unsigned char *sha1, int delopt){ struct ref_lock *lock; int err, i = 0, ret = 0, flag = 0; lock = lock_ref_sha1_basic(refname, sha1, 0, &flag); if (!lock) return 1; if (!(flag & REF_ISPACKED) || flag & REF_ISSYMREF) { /* loose */ const char *path; if (!(delopt & REF_NODEREF)) { i = strlen(lock->lk->filename) - 5; /* .lock */ lock->lk->filename[i] = 0; path = lock->lk->filename; } else { path = git_path("%s", refname); } err = unlink_or_warn(path); if (err && errno != ENOENT) ret = 1; if (!(delopt & REF_NODEREF)) lock->lk->filename[i] = '.'; } /* removing the loose one could have resurrected an earlier * packed one. Also, if it was not loose we need to repack * without it. */ ret |= repack_without_ref(refname); unlink_or_warn(git_path("logs/%s", lock->ref_name)); invalidate_cached_refs(); unlock_ref(lock); return ret;}
开发者ID:ratnikov,项目名称:git,代码行数:37,
示例25: rerere_clear/* * During a conflict resolution, after "rerere" recorded the * preimages, abandon them if the user did not resolve them or * record their resolutions. And drop $GIT_DIR/MERGE_RR. * * NEEDSWORK: shouldn't we be calling this from "reset --hard"? */void rerere_clear(struct string_list *merge_rr){ int i; if (setup_rerere(merge_rr, 0) < 0) return; for (i = 0; i < merge_rr->nr; i++) { struct rerere_id *id = merge_rr->items[i].util; if (!has_rerere_resolution(id)) unlink_rr_item(id); } unlink_or_warn(git_path_merge_rr()); rollback_lock_file(&write_lock);}
开发者ID:AndSoAway,项目名称:git,代码行数:22,
示例26: update_server_info/* public */int update_server_info(int force){ /* We would add more dumb-server support files later, * including index of available pack files and their * intended audiences. */ int errs = 0; errs = errs | update_info_refs(force); errs = errs | update_info_packs(force); /* remove leftover rev-cache file if there is any */ unlink_or_warn(git_path("info/rev-cache")); return errs;}
开发者ID:9b,项目名称:git,代码行数:17,
示例27: prune_objectstatic int prune_object(const char *fullpath, const unsigned char *sha1){ struct stat st; if (lstat(fullpath, &st)) return error("Could not stat '%s'", fullpath); if (st.st_mtime > expire) return 0; if (show_only || verbose) { enum object_type type = sha1_object_info(sha1, NULL); printf("%s %s/n", sha1_to_hex(sha1), (type > 0) ? typename(type) : "unknown"); } if (!show_only) unlink_or_warn(fullpath); return 0;}
开发者ID:7sOddities,项目名称:git,代码行数:16,
示例28: handle_file/* * Scan the path for conflicts, do the "handle_path()" thing above, and * return the number of conflict hunks found. */static int handle_file(struct index_state *istate, const char *path, unsigned char *hash, const char *output){ int has_conflicts = 0; struct rerere_io_file io; int marker_size = ll_merge_marker_size(istate, path); memset(&io, 0, sizeof(io)); io.io.getline = rerere_file_getline; io.input = fopen(path, "r"); io.io.wrerror = 0; if (!io.input) return error_errno(_("could not open '%s'"), path); if (output) { io.io.output = fopen(output, "w"); if (!io.io.output) { error_errno(_("could not write '%s'"), output); fclose(io.input); return -1; } } has_conflicts = handle_path(hash, (struct rerere_io *)&io, marker_size); fclose(io.input); if (io.io.wrerror) error(_("there were errors while writing '%s' (%s)"), path, strerror(io.io.wrerror)); if (io.io.output && fclose(io.io.output)) io.io.wrerror = error_errno(_("failed to flush '%s'"), path); if (has_conflicts < 0) { if (output) unlink_or_warn(output); return error(_("could not parse conflict hunks in '%s'"), path); } if (io.io.wrerror) return -1; return has_conflicts;}
开发者ID:Noffica,项目名称:git,代码行数:45,
示例29: handle_filestatic int handle_file(const char *path, unsigned char *sha1, const char *output){ int hunk_no = 0; struct rerere_io_file io; int marker_size = ll_merge_marker_size(path); memset(&io, 0, sizeof(io)); io.io.getline = rerere_file_getline; io.input = fopen(path, "r"); io.io.wrerror = 0; if (!io.input) return error("Could not open %s", path); if (output) { io.io.output = fopen(output, "w"); if (!io.io.output) { fclose(io.input); return error("Could not write %s", output); } } hunk_no = handle_path(sha1, (struct rerere_io *)&io, marker_size); fclose(io.input); if (io.io.wrerror) error("There were errors while writing %s (%s)", path, strerror(io.io.wrerror)); if (io.io.output && fclose(io.io.output)) io.io.wrerror = error("Failed to flush %s: %s", path, strerror(errno)); if (hunk_no < 0) { if (output) unlink_or_warn(output); return error("Could not parse conflict hunks in %s", path); } if (io.io.wrerror) return -1; return hunk_no;}
开发者ID:AViscatanius,项目名称:git,代码行数:40,
示例30: run_gpg_verifystatic int run_gpg_verify(const char *buf, unsigned long size, int verbose){ struct child_process gpg; const char *args_gpg[] = {"gpg", "--verify", "FILE", "-", NULL}; char path[PATH_MAX]; size_t len; int fd, ret; fd = git_mkstemp(path, PATH_MAX, ".git_vtag_tmpXXXXXX"); if (fd < 0) return error("could not create temporary file '%s': %s", path, strerror(errno)); if (write_in_full(fd, buf, size) < 0) return error("failed writing temporary file '%s': %s", path, strerror(errno)); close(fd); /* find the length without signature */ len = parse_signature(buf, size); if (verbose) write_in_full(1, buf, len); memset(&gpg, 0, sizeof(gpg)); gpg.argv = args_gpg; gpg.in = -1; args_gpg[2] = path; if (start_command(&gpg)) { unlink(path); return error("could not run gpg."); } write_in_full(gpg.in, buf, len); close(gpg.in); ret = finish_command(&gpg); unlink_or_warn(path); return ret;}
开发者ID:AsherBond,项目名称:MondocosmOS-Dependencies,代码行数:39,
注:本文中的unlink_or_warn函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ unlink_urbs函数代码示例 C++ unlikely函数代码示例 |