コード例 #1
0
ファイル: import.c プロジェクト: UNGLinux/Obase
static void
import_tag(struct cvs_file *cf, RCSNUM *branch, RCSNUM *newrev)
{
	int i;

	if (cvs_noexec != 1) {
		rcs_sym_add(cf->file_rcs, vendor_tag, branch);

		for (i = 0; i < tagcount; i++)
			rcs_sym_add(cf->file_rcs, release_tags[i], newrev);
	}
}
コード例 #2
0
ファイル: rcsprog.c プロジェクト: mosconi/openbsd
static void
rcs_attach_symbol(RCSFILE *file, const char *symname)
{
	char *rnum;
	RCSNUM *rev;
	char rbuf[RCS_REV_BUFSZ];
	int rm;

	rm = 0;
	rev = NULL;
	if ((rnum = strrchr(symname, ':')) != NULL) {
		if (rnum[1] == '\0')
			rev = file->rf_head;
		*(rnum++) = '\0';
	} else {
		rm = 1;
	}

	if (rev == NULL && rm != 1) {
		if ((rev = rcsnum_parse(rnum)) == NULL)
			errx(1, "bad revision %s", rnum);
	}

	if (rcsflags & RCSPROG_NFLAG)
		rm = 1;

	if (rm == 1) {
		if (rcs_sym_remove(file, symname) < 0) {
			if (rcs_errno == RCS_ERR_NOENT &&
			    !(rcsflags & RCSPROG_NFLAG))
				warnx("cannot delete nonexisting symbol %s",
				    symname);
		} else {
			if (rcsflags & RCSPROG_NFLAG)
				rm = 0;
		}
	}

	if (rm == 0) {
		if (rcs_sym_add(file, symname, rev) < 0 &&
		    rcs_errno == RCS_ERR_DUPENT) {
			rcsnum_tostr(rcs_sym_getrev(file, symname),
			    rbuf, sizeof(rbuf));
			errx(1, "symbolic name %s already bound to %s",
			    symname, rbuf);
		}
	}
}
コード例 #3
0
ファイル: import.c プロジェクト: UNGLinux/Obase
static void
import_new(struct cvs_file *cf)
{
	int i;
	BUF *bp;
	mode_t mode;
	time_t tstamp;
	struct stat st;
	struct rcs_branch *brp;
	struct rcs_delta *rdp;
	RCSNUM *branch, *brev;

	tstamp = -1;

	cvs_log(LP_TRACE, "import_new(%s)", cf->file_name);

	if (cvs_noexec == 1) {
		import_printf("N %s/%s\n", import_repository, cf->file_path);
		return;
	}

	if (fstat(cf->fd, &st) == -1)
		fatal("import_new: %s", strerror(errno));

	mode = st.st_mode;

	if (dflag == 1)
		tstamp = st.st_mtime;

	if ((branch = rcsnum_parse(import_branch)) == NULL)
		fatal("import_new: failed to parse branch");

	bp = buf_load_fd(cf->fd);

	if ((brev = rcsnum_brtorev(branch)) == NULL)
		fatal("import_new: failed to get first branch revision");

	cf->repo_fd = open(cf->file_rpath, O_CREAT | O_RDONLY);
	if (cf->repo_fd < 0)
		fatal("import_new: %s: %s", cf->file_rpath, strerror(errno));

	cf->file_rcs = rcs_open(cf->file_rpath, cf->repo_fd, RCS_CREATE,
	    (mode & ~(S_IWUSR | S_IWGRP | S_IWOTH)));
	if (cf->file_rcs == NULL)
		fatal("import_new: failed to create RCS file for %s",
		    cf->file_path);

	rcs_branch_set(cf->file_rcs, branch);

	if (rcs_sym_add(cf->file_rcs, vendor_tag, branch) == -1)
		fatal("import_new: failed to add vendor tag");

	for (i = 0; i < tagcount; i++) {
		if (rcs_sym_add(cf->file_rcs, release_tags[i], brev) == -1)
			fatal("import_new: failed to add release tag");
	}

	if (rcs_rev_add(cf->file_rcs, brev, logmsg, tstamp, NULL) == -1)
		fatal("import_new: failed to create first branch revision");

	if (rcs_rev_add(cf->file_rcs, RCS_HEAD_REV, "Initial revision",
	    tstamp, NULL) == -1)
		fatal("import_new: failed to create first revision");

	if ((rdp = rcs_findrev(cf->file_rcs, cf->file_rcs->rf_head)) == NULL)
		fatal("import_new: cannot find newly added revision");

	brp = xmalloc(sizeof(*brp));
	brp->rb_num = rcsnum_alloc();
	rcsnum_cpy(brev, brp->rb_num, 0);
	TAILQ_INSERT_TAIL(&(rdp->rd_branches), brp, rb_list);

	if (rcs_deltatext_set(cf->file_rcs,
	    cf->file_rcs->rf_head, bp) == -1)
		fatal("import_new: failed to set deltatext");

	if (kflag)
		rcs_kwexp_set(cf->file_rcs, kflag);

	rcs_write(cf->file_rcs);
	import_printf("N %s/%s\n", import_repository, cf->file_path);

	rcsnum_free(branch);
	rcsnum_free(brev);
}
コード例 #4
0
ファイル: add.c プロジェクト: UNGLinux/Obase
void
cvs_add_tobranch(struct cvs_file *cf, char *tag)
{
	BUF *bp;
	char attic[MAXPATHLEN], repo[MAXPATHLEN];
	char *msg;
	struct stat st;
	RCSNUM *branch;

	cvs_log(LP_TRACE, "cvs_add_tobranch(%s)", cf->file_name);

	if (cvs_noexec == 1)
		return;

	if (fstat(cf->fd, &st) == -1)
		fatal("cvs_add_tobranch: %s", strerror(errno));

	cvs_get_repository_path(cf->file_wd, repo, MAXPATHLEN);
	(void)xsnprintf(attic, MAXPATHLEN, "%s/%s",
	    repo, CVS_PATH_ATTIC);

	if (mkdir(attic, 0755) == -1 && errno != EEXIST)
		fatal("cvs_add_tobranch: failed to create Attic");

	(void)xsnprintf(attic, MAXPATHLEN, "%s/%s/%s%s", repo,
	    CVS_PATH_ATTIC, cf->file_name, RCS_FILE_EXT);

	xfree(cf->file_rpath);
	cf->file_rpath = xstrdup(attic);

	cf->repo_fd = open(cf->file_rpath, O_CREAT|O_RDONLY);
	if (cf->repo_fd < 0)
		fatal("cvs_add_tobranch: %s: %s", cf->file_rpath,
		    strerror(errno));

	cf->file_rcs = rcs_open(cf->file_rpath, cf->repo_fd,
	    RCS_CREATE|RCS_WRITE, 0444);
	if (cf->file_rcs == NULL)
		fatal("cvs_add_tobranch: failed to create RCS file for %s",
		    cf->file_path);

	if ((branch = rcsnum_parse("1.1.2")) == NULL)
		fatal("cvs_add_tobranch: failed to parse branch");

	if (rcs_sym_add(cf->file_rcs, tag, branch) == -1)
		fatal("cvs_add_tobranch: failed to add vendor tag");

	(void)xasprintf(&msg, "file %s was initially added on branch %s.",
	    cf->file_name, tag);
	if (rcs_rev_add(cf->file_rcs, RCS_HEAD_REV, msg, -1, NULL) == -1)
		fatal("cvs_add_tobranch: failed to create first branch "
		    "revision");
	xfree(msg);

	if (rcs_findrev(cf->file_rcs, cf->file_rcs->rf_head) == NULL)
		fatal("cvs_add_tobranch: cannot find newly added revision");

	bp = buf_alloc(1);

	if (rcs_deltatext_set(cf->file_rcs,
	    cf->file_rcs->rf_head, bp) == -1)
		fatal("cvs_add_tobranch: failed to set deltatext");

	rcs_comment_set(cf->file_rcs, " * ");

	if (rcs_state_set(cf->file_rcs, cf->file_rcs->rf_head, RCS_STATE_DEAD)
	    == -1)
		fatal("cvs_add_tobranch: failed to set state");
}