From nobody Wed Oct 12 08:42:55 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4MnR4H6zMXz4fmCx; Wed, 12 Oct 2022 08:42:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4MnR4H6Wmyz3Wgr; Wed, 12 Oct 2022 08:42:55 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665564175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sVRhTnxDHVXqTkttpRknzQGKFqc+KQtd3D3vA9k09IU=; b=tQ4u0sBG/BN24TIsJKljwUcynXhqcD2sPquMtyRxEfmwX6p+dgm4KPgkaFz285dCzDTbzz mfj/NUSr3eUQ+p9+T8Rkao3B/qCFICtW4WsW4QcAIcziWLhpwKfOQqLOzGRwjH9YOkjRiG pA8KTRYv96pivf3N6qFuj4CXVZYCPTDTp8IqmO0LxwXQNrVhzM4AwETY7gnE7ndCM0hZDH lcEHa/XE7YtBcXT92Uhf0mMzaBUemfBVijBQXKuqqdRT1EhTT7bUpdn7BNpwpDmZcFoWZO wPyIl3I/NMlhwYQAULrd5xxWzQmBN1Ehqn1zcGkbJmJdkb7QXCxY1pi+B6qnJw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4MnR4H5bHJz1Fvq; Wed, 12 Oct 2022 08:42:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 29C8gtpm005993; Wed, 12 Oct 2022 08:42:55 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 29C8gtjj005992; Wed, 12 Oct 2022 08:42:55 GMT (envelope-from git) Date: Wed, 12 Oct 2022 08:42:55 GMT Message-Id: <202210120842.29C8gtjj005992@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Baptiste Daroussin Subject: git: 08180c70431b - stable/13 - ident: replace sbuf(9) with open_memstream(3) List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: bapt X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 08180c70431be484f92b42a4eb273dbed7a61c42 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1665564175; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=sVRhTnxDHVXqTkttpRknzQGKFqc+KQtd3D3vA9k09IU=; b=NcZal5qlLz4JlULgCeoGbx8Y/7SbVoa3yYZOyy+AFqDY+OCJqiwB12DPqGof1FGM1ncDWB 8dnX0vv2yCrte1xgiGbINDEBaCrhENX0SskfNI9naSrkDMXzVXjuzu4UcFNjl3neLdADVk Jq365mSGWtjlrGZmo+G7tc1OZ4dG5azzpFkZwmJEYhbnqYnqf/aZmcdJs8ayOeOPfOEwOf 1FvPc0FL5QCZ2UMtrerO4uTlSfpEwij1hUW7IWTtnjnSEGZngD/Arh5tCmA6lLQEw1Sphx msUe6OUkPKIneDJODg16BWbdWuzb2V2PtCEC9a4Nk1639erE/vz4ldcfhWfIsw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1665564175; a=rsa-sha256; cv=none; b=m2bgmoeH8BPI2aKhu1HQGqMVYOLcdu04IkA+ud7iHy+82QboN+mRd8xZxTbbN5PQv22cz0 LTozF+2xARiYMXH5U9kAuA5B499difCODqVVW8jifIaYky0nAj9wM/wLPr/m3lz6GDSAYC 5S+16znc+Cu+89U9+A/FSXF95aTov3Z+snu3G6/yLynqrrlul74RxC+5nSHNDPriJbQIPH fe2pgUb335NDD2GKs+u2alvikKNH/d951Z9y2/zddo1QqdCpq4yqxp76WKNzdMT6HfbeTk hBROJbvQlHdp8JBCNpGxRGyqNlupezQUOl6YnmW+uLCd/aJ+76vBPTcBdfNw1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by bapt: URL: https://cgit.FreeBSD.org/src/commit/?id=08180c70431be484f92b42a4eb273dbed7a61c42 commit 08180c70431be484f92b42a4eb273dbed7a61c42 Author: Baptiste Daroussin AuthorDate: 2021-10-28 13:39:24 +0000 Commit: Baptiste Daroussin CommitDate: 2022-10-12 08:41:07 +0000 ident: replace sbuf(9) with open_memstream(3) This change makes ident only dependant on libc functions This makes our ident(1) more portable, also the fact that we only depend on libc which is maintained with excellent backward compatibility means that if one day ident is removed from base, someone using FreeBSD 22 will be able to fetch ident from FreeBSD 14 to run ident against FreeBSD 1.0 binary MFC After: 1 week (cherry picked from commit 1a4d5f13ba19308f9909ef712c5d7eebaf1f9806) --- usr.bin/ident/Makefile | 2 -- usr.bin/ident/ident.c | 35 +++++++++++++++++++++++------------ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/usr.bin/ident/Makefile b/usr.bin/ident/Makefile index e0a3a80f7b09..0e0734081607 100644 --- a/usr.bin/ident/Makefile +++ b/usr.bin/ident/Makefile @@ -4,8 +4,6 @@ PROG= ident -LIBADD= sbuf - HAS_TESTS= SUBDIR.${MK_TESTS}+= tests diff --git a/usr.bin/ident/ident.c b/usr.bin/ident/ident.c index aa9612d2fce1..14ff8ec8f335 100644 --- a/usr.bin/ident/ident.c +++ b/usr.bin/ident/ident.c @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2015 Baptiste Daroussin + * Copyright (c) 2015-2021 Baptiste Daroussin * Copyright (c) 2015 Xin LI * * Redistribution and use in source and binary forms, with or without @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -58,10 +59,17 @@ scan(FILE *fp, const char *name, bool quiet) bool hasid = false; bool subversion = false; analyzer_states state = INIT; - struct sbuf *id = sbuf_new_auto(); + FILE* buffp; + char *buf; + size_t sz; locale_t l; l = newlocale(LC_ALL_MASK, "C", NULL); + sz = 0; + buf = NULL; + buffp = open_memstream(&buf, &sz); + if (buffp == NULL) + err(EXIT_FAILURE, "open_memstream()"); if (name != NULL) printf("%s:\n", name); @@ -80,9 +88,11 @@ scan(FILE *fp, const char *name, bool quiet) case DELIM_SEEN: if (isalpha_l(c, l)) { /* Transit to KEYWORD if we see letter */ - sbuf_clear(id); - sbuf_putc(id, '$'); - sbuf_putc(id, c); + if (buf != NULL) + memset(buf, 0, sz); + rewind(buffp); + fputc('$', buffp); + fputc(c, buffp); state = KEYWORD; continue; @@ -95,7 +105,7 @@ scan(FILE *fp, const char *name, bool quiet) } break; case KEYWORD: - sbuf_putc(id, c); + fputc(c, buffp); if (isalpha_l(c, l)) { /* @@ -125,7 +135,7 @@ scan(FILE *fp, const char *name, bool quiet) break; case PUNC_SEEN: case PUNC_SEEN_SVN: - sbuf_putc(id, c); + fputc(c, buffp); switch (c) { case ':': @@ -159,13 +169,13 @@ scan(FILE *fp, const char *name, bool quiet) } break; case TEXT: - sbuf_putc(id, c); + fputc(c, buffp); if (iscntrl_l(c, l)) { /* Control characters are not allowed in this state */ state = INIT; } else if (c == '$') { - sbuf_finish(id); + fflush(buffp); /* * valid ident should end with a space. * @@ -175,9 +185,9 @@ scan(FILE *fp, const char *name, bool quiet) * subversion mode. No length check is enforced * because GNU RCS ident(1) does not do it either. */ - c = sbuf_data(id)[sbuf_len(id) - 2]; + c = buf[strlen(buf) -2 ]; if (c == ' ' || (subversion && c == '#')) { - printf(" %s\n", sbuf_data(id)); + printf(" %s\n", buf); hasid = true; } state = INIT; @@ -186,7 +196,8 @@ scan(FILE *fp, const char *name, bool quiet) break; } } - sbuf_delete(id); + fclose(buffp); + free(buf); freelocale(l); if (!hasid) {