=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/cvs/getlog.c,v retrieving revision 1.65 retrieving revision 1.66 diff -c -r1.65 -r1.66 *** src/usr.bin/cvs/getlog.c 2006/07/07 17:37:17 1.65 --- src/usr.bin/cvs/getlog.c 2006/10/24 13:15:34 1.66 *************** *** 1,5 **** ! /* $OpenBSD: getlog.c,v 1.65 2006/07/07 17:37:17 joris Exp $ */ /* * Copyright (c) 2006 Joris Vink * * Permission to use, copy, modify, and distribute this software for any --- 1,6 ---- ! /* $OpenBSD: getlog.c,v 1.66 2006/10/24 13:15:34 xsa Exp $ */ /* + * Copyright (c) 2005, 2006 Xavier Santolaria * Copyright (c) 2006 Joris Vink * * Permission to use, copy, modify, and distribute this software for any *************** *** 28,35 **** --- 29,42 ---- #define LOG_REVEND \ "=============================================================================" + #define L_HEAD 0x01 + #define L_HEAD_DESCR 0x02 + #define L_NAME 0x04 + #define L_NOTAGS 0x08 + void cvs_log_local(struct cvs_file *); + int runflags = 0; char *logrev = NULL; struct cvs_cmd cvs_cmd_log = { *************** *** 55,66 **** --- 62,84 ---- while ((ch = getopt(argc, argv, cvs_cmd_log.cmd_opts)) != -1) { switch (ch) { + case 'h': + runflags |= L_HEAD; + break; case 'l': flags &= ~CR_RECURSE_DIRS; break; + case 'N': + runflags |= L_NOTAGS; + break; + case 'R': + runflags |= L_NAME; case 'r': logrev = optarg; break; + case 't': + runflags |= L_HEAD_DESCR; + break; default: fatal("%s", cvs_cmd_log.cmd_synopsis); } *************** *** 75,85 **** --- 93,115 ---- if (current_cvsroot->cr_method != CVS_METHOD_LOCAL) { cr.fileproc = cvs_client_sendfile; + if (runflags & L_HEAD) + cvs_client_send_request("Argument -h"); + if (!(flags & CR_RECURSE_DIRS)) cvs_client_send_request("Argument -l"); + if (runflags & L_NOTAGS) + cvs_client_send_request("Argument -N"); + + if (runflags & L_NAME) + cvs_client_send_request("Argument -R"); + if (logrev != NULL) cvs_client_send_request("Argument -r%s", logrev); + + if (runflags & L_HEAD_DESCR) + cvs_client_send_request("Argument -t"); } else { cr.fileproc = cvs_log_local; } *************** *** 133,138 **** --- 163,173 ---- return; } + if (runflags & L_NAME) { + cvs_printf("%s\n", cf->file_rpath); + return; + } + cvs_printf("\nRCS file: %s", cf->file_rpath); cvs_printf("\nWorking file: %s", cf->file_path); cvs_printf("\nhead:"); *************** *** 156,165 **** TAILQ_FOREACH(acp, &(cf->file_rcs->rf_access), ra_list) cvs_printf("\t%s\n", acp->ra_name); ! cvs_printf("symbolic names:\n"); ! TAILQ_FOREACH(sym, &(cf->file_rcs->rf_symbols), rs_list) { ! cvs_printf("\t%s: %s\n", sym->rs_name, ! rcsnum_tostr(sym->rs_num, numb, sizeof(numb))); } cvs_printf("keyword substitution: %s\n", --- 191,202 ---- TAILQ_FOREACH(acp, &(cf->file_rcs->rf_access), ra_list) cvs_printf("\t%s\n", acp->ra_name); ! if (!(runflags & L_NOTAGS)) { ! cvs_printf("symbolic names:\n"); ! TAILQ_FOREACH(sym, &(cf->file_rcs->rf_symbols), rs_list) { ! cvs_printf("\t%s: %s\n", sym->rs_name, ! rcsnum_tostr(sym->rs_num, numb, sizeof(numb))); ! } } cvs_printf("keyword substitution: %s\n", *************** *** 172,196 **** else nrev = cf->file_rcs->rf_ndelta; ! cvs_printf(";\tselected revisions: %u", nrev); cvs_printf("\n"); - cvs_printf("description:\n%s", cf->file_rcs->rf_desc); ! TAILQ_FOREACH(rdp, &(cf->file_rcs->rf_delta), rd_list) { ! if (logrev != NULL && ! !(rdp->rd_flags & RCS_RD_SELECT)) ! continue; ! cvs_printf("%s\n", LOG_REVSEP); ! rcsnum_tostr(rdp->rd_num, numb, sizeof(numb)); ! cvs_printf("revision %s", numb); ! strftime(timeb, sizeof(timeb), "%Y/%m/%d %H:%M:%S", ! &rdp->rd_date); ! cvs_printf("\ndate: %s; author: %s; state: %s;\n", timeb, ! rdp->rd_author, rdp->rd_state); ! cvs_printf("%s", rdp->rd_log); } cvs_printf("%s\n", LOG_REVEND); --- 209,240 ---- else nrev = cf->file_rcs->rf_ndelta; ! if (cf->file_rcs->rf_head != NULL && ! !(runflags & L_HEAD) && !(runflags & L_HEAD_DESCR)) ! cvs_printf(";\tselected revisions: %u", nrev); ! cvs_printf("\n"); ! if (!(runflags & L_HEAD) || (runflags & L_HEAD_DESCR)) ! cvs_printf("description:\n%s", cf->file_rcs->rf_desc); ! if (!(runflags & L_HEAD) && !(runflags & L_HEAD_DESCR)) { ! TAILQ_FOREACH(rdp, &(cf->file_rcs->rf_delta), rd_list) { ! if (logrev != NULL && ! !(rdp->rd_flags & RCS_RD_SELECT)) ! continue; ! cvs_printf("%s\n", LOG_REVSEP); ! rcsnum_tostr(rdp->rd_num, numb, sizeof(numb)); ! cvs_printf("revision %s", numb); ! ! strftime(timeb, sizeof(timeb), "%Y/%m/%d %H:%M:%S", ! &rdp->rd_date); ! cvs_printf("\ndate: %s; author: %s; state: %s;\n", ! timeb, rdp->rd_author, rdp->rd_state); ! cvs_printf("%s", rdp->rd_log); ! } } cvs_printf("%s\n", LOG_REVEND);