Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/make make(1): clean up comments in arch.c



details:   https://anonhg.NetBSD.org/src/rev/ea940e10a27d
branches:  trunk
changeset: 942369:ea940e10a27d
user:      rillig <rillig%NetBSD.org@localhost>
date:      Sat Nov 07 11:36:49 2020 +0000

description:
make(1): clean up comments in arch.c

diffstat:

 usr.bin/make/arch.c |  128 +++++++++++++++++++++------------------------------
 1 files changed, 52 insertions(+), 76 deletions(-)

diffs (239 lines):

diff -r c5e672f2d5d6 -r ea940e10a27d usr.bin/make/arch.c
--- a/usr.bin/make/arch.c       Sat Nov 07 10:48:17 2020 +0000
+++ b/usr.bin/make/arch.c       Sat Nov 07 11:36:49 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: arch.c,v 1.156 2020/11/07 10:16:18 rillig Exp $        */
+/*     $NetBSD: arch.c,v 1.157 2020/11/07 11:36:49 rillig Exp $        */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -68,26 +68,25 @@
  * SUCH DAMAGE.
  */
 
-/*-
- * arch.c --
- *     Functions to manipulate libraries, archives and their members.
+/* Manipulate libraries, archives and their members.
  *
- *     Once again, cacheing/hashing comes into play in the manipulation
- * of archives. The first time an archive is referenced, all of its members'
- * headers are read and hashed and the archive closed again. All hashed
- * archives are kept on a list which is searched each time an archive member
- * is referenced.
+ * The first time an archive is referenced, all of its members' headers are
+ * read and cashed and the archive closed again.  All cashed archives are kept
+ * on a list which is searched each time an archive member is referenced.
  *
  * The interface to this module is:
+ *
+ *     Arch_Init       Initialize this module.
+ *
+ *     Arch_End        Clean up this module.
+ *
  *     Arch_ParseArchive
- *                     Given an archive specification, return a list
- *                     of GNode's, one for each member in the spec.
- *                     FALSE is returned if the specification is
- *                     invalid for some reason.
+ *                     Parse an archive specification such as
+ *                     "archive.a(member1 member2)".
  *
  *     Arch_Touch      Alter the modification time of the archive
  *                     member described by the given node to be
- *                     the current time.
+ *                     the time when make was started.
  *
  *     Arch_TouchLib   Update the modification time of the library
  *                     described by the given node. This is special
@@ -99,7 +98,8 @@
  *                     placed in the member's GNode. Returns the
  *                     modification time.
  *
- *     Arch_MemTime    Find the modification time of a member of
+ *     Arch_MemberMTime
+ *                     Find the modification time of a member of
  *                     an archive. Called when the member doesn't
  *                     already exist. Looks in the archive for the
  *                     modification time. Returns the modification
@@ -109,12 +109,7 @@
  *                     library name in the GNode should be in
  *                     -l<name> format.
  *
- *     Arch_LibOODate  Special function to decide if a library node
- *                     is out-of-date.
- *
- *     Arch_Init       Initialize this module.
- *
- *     Arch_End        Clean up this module.
+ *     Arch_LibOODate  Decide if a library node is out-of-date.
  */
 
 #include <sys/types.h>
@@ -130,7 +125,7 @@
 #include "config.h"
 
 /*     "@(#)arch.c     8.2 (Berkeley) 1/2/94"  */
-MAKE_RCSID("$NetBSD: arch.c,v 1.156 2020/11/07 10:16:18 rillig Exp $");
+MAKE_RCSID("$NetBSD: arch.c,v 1.157 2020/11/07 11:36:49 rillig Exp $");
 
 #ifdef TARGET_MACHINE
 #undef MAKE_MACHINE
@@ -181,23 +176,20 @@
 #endif
 
 
-/*-
- *-----------------------------------------------------------------------
- * Arch_ParseArchive --
- *     Parse the archive specification in the given line and find/create
- *     the nodes for the specified archive members, placing their nodes
- *     on the given list.
+/*
+ * Parse an archive specification such as "archive.a(member1 member2.${EXT})",
+ * adding nodes for the expanded members to nodeLst.  Nodes are created as
+ * necessary.
  *
  * Input:
- *     pp              Pointer to start of specification, updated
- *     nodeLst         Lst on which to place the nodes
- *     ctxt            Context in which to expand variables
+ *     pp              The start of the specification.
+ *     nodeLst         The list on which to place the nodes.
+ *     ctxt            The context in which to expand variables.
  *
- * Results:
- *     TRUE if it was a valid specification. The pp is updated
- *     to point to the first non-space after the archive spec. The
- *     nodes for the members are placed on the given list.
- *-----------------------------------------------------------------------
+ * Output:
+ *     return          TRUE if it was a valid specification.
+ *     *pp             Points to the first non-space after the archive spec.
+ *     *nodeLst        Nodes for the members have been added.
  */
 Boolean
 Arch_ParseArchive(char **pp, GNodeList *nodeLst, GNode *ctxt)
@@ -683,26 +675,21 @@
 #endif
 
 
-/*-
- *-----------------------------------------------------------------------
- * ArchFindMember --
- *     Locate a member of an archive, given the path of the archive and
- *     the path of the desired member. If the archive is to be modified,
- *     the mode should be "r+", if not, it should be "r".
- *     The passed struct ar_hdr structure is filled in.
+/* Locate a member of an archive, given the path of the archive and the path
+ * of the desired member.
  *
  * Input:
  *     archive         Path to the archive
  *     member          Name of member. If it is a path, only the last
  *                     component is used.
  *     out_arh         Archive header to be filled in
- *     mode            The mode for opening the stream
+ *     mode            "r" for read-only access, "r+" for read-write access
  *
- * Results:
- *     An FILE *, opened for reading and writing, positioned at the
- *     start of the member's struct ar_hdr, or NULL if the member was
- *     nonexistent. The current struct ar_hdr for member.
- *-----------------------------------------------------------------------
+ * Output:
+ *     return          The archive file, positioned at the start of the
+ *                     member's struct ar_hdr, or NULL if the member doesn't
+ *                     exist.
+ *     *out_arh        The current struct ar_hdr for member.
  */
 static FILE *
 ArchFindMember(const char *archive, const char *member, struct ar_hdr *out_arh,
@@ -841,26 +828,23 @@
     return NULL;
 }
 
-/*-
- *-----------------------------------------------------------------------
- * Arch_Touch --
- *     Touch a member of an archive.
- *     The modification time of the entire archive is also changed.
- *     For a library, this could necessitate the re-ranlib'ing of the
- *     whole thing.
+/* Touch a member of an archive, on disk.
+ * The GNode's modification time is left as-is.
+ *
+ * The st_mtime of the entire archive is also changed.
+ * For a library, it may be required to run ranlib after this.
  *
  * Input:
  *     gn              Node of member to touch
  *
  * Results:
  *     The 'time' field of the member's header is updated.
- *-----------------------------------------------------------------------
  */
 void
 Arch_Touch(GNode *gn)
 {
-    FILE *arch;                /* Stream open to archive, positioned properly */
-    struct ar_hdr arh; /* Current header describing member */
+    FILE *arch;
+    struct ar_hdr arh;
 
     arch = ArchFindMember(GNode_VarArchive(gn), GNode_VarMember(gn),
                          &arh, "r+");
@@ -877,18 +861,14 @@
  * the table of contents also is touched.
  *
  * Both the modification time of the library and of the RANLIBMAG member are
- * set to 'now'.
- *
- * Input:
- *     gn              The node of the library to touch
- */
+ * set to 'now'. */
 void
 Arch_TouchLib(GNode *gn)
 {
 #ifdef RANLIBMAG
-    FILE *         arch;       /* Stream open to archive */
-    struct ar_hdr   arh;       /* Header describing table of contents */
-    struct utimbuf  times;     /* Times for utime() call */
+    FILE *arch;
+    struct ar_hdr arh;         /* Header describing table of contents */
+    struct utimbuf times;
 
     arch = ArchFindMember(gn->path, RANLIBMAG, &arh, "r+");
     snprintf(arh.ar_date, sizeof arh.ar_date, "%-12ld", (long) now);
@@ -905,17 +885,13 @@
 #endif
 }
 
-/* Return the modification time of a member of an archive. The mtime field
- * of the given node is filled in with the value returned by the function.
- *
- * Input:
- *     gn              Node describing archive member
- */
+/* Update the mtime of the GNode with the mtime from the archive member on
+ * disk (or in the cache). */
 time_t
 Arch_MTime(GNode *gn)
 {
-    struct ar_hdr *arh;                /* Header of desired member */
-    time_t modTime;            /* Modification time as an integer */
+    struct ar_hdr *arh;
+    time_t modTime;
 
     arh = ArchStatMember(GNode_VarArchive(gn), GNode_VarMember(gn), TRUE);
     if (arh != NULL) {
@@ -997,7 +973,7 @@
 
 /* Decide if a node with the OP_LIB attribute is out-of-date. Called from
  * Make_OODate to make its life easier.
- * The library will be hashed if it hasn't been already.
+ * The library is cached if it hasn't been already.
  *
  * There are several ways for a library to be out-of-date that are
  * not available to ordinary files. In addition, there are ways



Home | Main Index | Thread Index | Old Index