git: 458c0053ef12 - main - misc/clifm: new port had been added (+)

Alexey Dokuchaev danfe at FreeBSD.org
Fri Jun 18 13:03:54 UTC 2021


The branch main has been updated by danfe:

URL: https://cgit.FreeBSD.org/ports/commit/?id=458c0053ef12c03bc5663e907e618b9fa096ebc1

commit 458c0053ef12c03bc5663e907e618b9fa096ebc1
Author:     Alexey Dokuchaev <danfe at FreeBSD.org>
AuthorDate: 2021-06-18 12:59:54 +0000
Commit:     Alexey Dokuchaev <danfe at FreeBSD.org>
CommitDate: 2021-06-18 13:02:32 +0000

    misc/clifm: new port had been added (+)
    
    Unlike most of the terminal file managers, CliFM replaces the
    traditional curses interface by a simple command-line interface.
    It is a file manager, but also a shell extension.
    
    WWW: https://github.com/leo-arch/clifm
---
 misc/Makefile                     |   1 +
 misc/clifm/Makefile               |  24 +++++++++
 misc/clifm/distinfo               |   3 ++
 misc/clifm/files/patch-src_misc.c | 102 ++++++++++++++++++++++++++++++++++++++
 misc/clifm/pkg-descr              |  13 +++++
 misc/clifm/pkg-plist              |  33 ++++++++++++
 6 files changed, 176 insertions(+)

diff --git a/misc/Makefile b/misc/Makefile
index 1d170dba3a9f..eca4d228f1df 100644
--- a/misc/Makefile
+++ b/misc/Makefile
@@ -38,6 +38,7 @@
     SUBDIR += cinnamon-translations
     SUBDIR += cldr-emoji-annotation
     SUBDIR += clex
+    SUBDIR += clifm
     SUBDIR += cloc
     SUBDIR += clpbar
     SUBDIR += cmatrix
diff --git a/misc/clifm/Makefile b/misc/clifm/Makefile
new file mode 100644
index 000000000000..90769df4590b
--- /dev/null
+++ b/misc/clifm/Makefile
@@ -0,0 +1,24 @@
+# Created by: Alexey Dokuchaev <danfe at FreeBSD.org>
+
+PORTNAME=	clifm
+PORTVERSION=	1.1
+DISTVERSIONPREFIX=	v
+CATEGORIES=	misc
+
+MAINTAINER=	danfe at FreeBSD.org
+COMMENT=	Non-curses, KISS file manager for the terminal
+
+LICENSE=	GPLv2
+
+USES=		desktop-file-utils gettext-runtime gmake localbase readline
+USE_GITHUB=	yes
+GH_ACCOUNT=	leo-arch
+ALL_TARGET=	build
+MAKE_ENV=	INSTALLPREFIX=${STAGEDIR}${PREFIX}/bin \
+		DESKTOPPREFIX=${STAGEDIR}${PREFIX}/share
+
+post-patch:
+	@${REINPLACE_CMD} -e '/^CFLAGS/s,=.*-march=native,+=,' \
+		${WRKSRC}/src/Makefile
+
+.include <bsd.port.mk>
diff --git a/misc/clifm/distinfo b/misc/clifm/distinfo
new file mode 100644
index 000000000000..8acd70659951
--- /dev/null
+++ b/misc/clifm/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1622268275
+SHA256 (leo-arch-clifm-v1.1_GH0.tar.gz) = e2be66e8000fc43f177e472045d9d30f44625e854d85b4cdf5aad8179d32d5af
+SIZE (leo-arch-clifm-v1.1_GH0.tar.gz) = 7195392
diff --git a/misc/clifm/files/patch-src_misc.c b/misc/clifm/files/patch-src_misc.c
new file mode 100644
index 000000000000..0e2d7c9ffc7d
--- /dev/null
+++ b/misc/clifm/files/patch-src_misc.c
@@ -0,0 +1,102 @@
+--- src/misc.c.orig	2021-05-29 06:04:35 UTC
++++ src/misc.c
+@@ -31,6 +31,10 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <sys/stat.h>
++#if defined(__FreeBSD__)
++#include <sys/mount.h>
++#include <sys/sysctl.h>
++#endif
+ #include <time.h>
+ #include <unistd.h>
+ #include <readline/readline.h>
+@@ -255,9 +259,16 @@ new_instance(char *dir, int sudo)
+ 	}
+ 
+ 	/* Get absolute path of executable name of itself */
++#if defined(__linux__)
+ 	char *self = realpath("/proc/self/exe", NULL);
+ 
+ 	if (!self) {
++#elif defined(__FreeBSD__)
++	const int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
++	char *self = malloc(PATH_MAX);
++	size_t len = PATH_MAX;
++	if (!self || sysctl(mib, 4, self, &len, NULL, 0) == -1) {
++#endif
+ 		fprintf(stderr, "%s: %s\n", PROGRAM_NAME, strerror(errno));
+ 		return EXIT_FAILURE;
+ 	}
+@@ -812,6 +823,7 @@ set_shell(char *str)
+ int
+ list_mountpoints(void)
+ {
++#if defined(__linux__)
+ 	FILE *mp_fp = fopen("/proc/mounts", "r");
+ 
+ 	if (!mp_fp) {
+@@ -819,13 +831,15 @@ list_mountpoints(void)
+ 				PROGRAM_NAME, strerror(errno));
+ 		return EXIT_FAILURE;
+ 	}
++#endif
+ 
+ 	printf(_("%sMountpoints%s\n\n"), bold, df_c);
+ 
+ 	char **mountpoints = (char **)NULL;
+ 	size_t mp_n = 0;
+-	int exit_status = EXIT_SUCCESS;
++	int i, j, exit_status = EXIT_SUCCESS;
+ 
++#if defined(__linux__)
+ 	size_t line_size = 0;
+ 	char *line = (char *)NULL;
+ 	ssize_t line_len = 0;
+@@ -870,6 +884,10 @@ list_mountpoints(void)
+ 	free(line);
+ 	line = (char *)NULL;
+ 	fclose(mp_fp);
++#elif defined(__FreeBSD__)
++	struct statfs *fslist;
++	mp_n = getmntinfo(&fslist, MNT_NOWAIT);
++#endif
+ 
+ 	/* This should never happen: There should always be a mountpoint,
+ 	 * at least "/" */
+@@ -877,6 +895,26 @@ list_mountpoints(void)
+ 		fputs(_("mp: There are no available mountpoints\n"), stdout);
+ 		return EXIT_SUCCESS;
+ 	}
++#if defined(__FreeBSD__)
++	for (i = j = 0; i < mp_n; i++) {
++		/* Do not list all mountpoints, but only those corresponding
++		 * to a block device (/dev) */
++		if (strncmp(fslist[i].f_mntfromname, "/dev/", 5) == 0) {
++			printf("%s%u%s %s%s%s (%s)\n", el_c, j + 1, df_c,
++			    (access(fslist[i].f_mntonname, R_OK | X_OK)
++			    == 0) ? di_c : nd_c, fslist[i].f_mntonname,
++			    df_c, fslist[i].f_mntfromname);
++			/* Store the mountpoint into an array */
++			mountpoints = (char **)xrealloc(mountpoints,
++			    (j + 1) * sizeof(char *));
++			mountpoints[j++] = savestring(fslist[i].f_mntonname,
++			    strlen(fslist[i].f_mntonname));
++		}
++	}
++	/* Update filesystem counter as it would be used to free() the
++	 * mountpoints entries later (below) */
++	mp_n = j;
++#endif
+ 
+ 	putchar('\n');
+ 	/* Ask the user and chdir into the selected mountpoint */
+@@ -922,7 +960,7 @@ list_mountpoints(void)
+ 	/* Free stuff and exit */
+ 	free(input);
+ 
+-	int i = (int)mp_n;
++	i = (int)mp_n;
+ 	while (--i >= 0)
+ 		free(mountpoints[i]);
+ 
diff --git a/misc/clifm/pkg-descr b/misc/clifm/pkg-descr
new file mode 100644
index 000000000000..1588853c1ff8
--- /dev/null
+++ b/misc/clifm/pkg-descr
@@ -0,0 +1,13 @@
+Unlike most of the terminal file managers, CliFM replaces the traditional
+curses interface by a simple command-line interface.  It is a file manager,
+but also a shell extension.
+
+Search for files, copy, rename, and trash some of them, but, at the same
+time, update/upgrade your system, add some cronjob, stop a service, and
+run nano (or vi, or emacs, if you like).
+
+Those familiar with the command-line will find in a file manager based on
+it a desirable addition to its functionality.  The command-line is still
+there, never hidden.
+
+WWW: https://github.com/leo-arch/clifm
diff --git a/misc/clifm/pkg-plist b/misc/clifm/pkg-plist
new file mode 100644
index 000000000000..ef396d41ed04
--- /dev/null
+++ b/misc/clifm/pkg-plist
@@ -0,0 +1,33 @@
+bin/clifm
+share/applications/clifm.desktop
+share/bash-completion/completions/clifm
+%%DATADIR%%/functions/cd_on_quit.sh
+%%DATADIR%%/functions/file_picker.sh
+%%DATADIR%%/functions/subshell_notice.sh
+%%DATADIR%%/mimelist.cfm
+%%DATADIR%%/plugins/BFG.sh
+%%DATADIR%%/plugins/batch_create.sh
+%%DATADIR%%/plugins/clip.sh
+%%DATADIR%%/plugins/colors.sh
+%%DATADIR%%/plugins/dragondrop.sh
+%%DATADIR%%/plugins/finder.sh
+%%DATADIR%%/plugins/fzfdesel.sh
+%%DATADIR%%/plugins/fzfhist.sh
+%%DATADIR%%/plugins/fzfnav.sh
+%%DATADIR%%/plugins/fzfsel.sh
+%%DATADIR%%/plugins/git_status.sh
+%%DATADIR%%/plugins/ihelp.sh
+%%DATADIR%%/plugins/img_viewer.sh
+%%DATADIR%%/plugins/jumper.sh
+%%DATADIR%%/plugins/kbgen.c
+%%DATADIR%%/plugins/mime_list.sh
+%%DATADIR%%/plugins/music_player.sh
+%%DATADIR%%/plugins/pdf_viewer.sh
+%%DATADIR%%/plugins/rgfind.sh
+%%DATADIR%%/plugins/update.sh
+%%DATADIR%%/plugins/vid_viewer.sh
+%%DATADIR%%/plugins/wallpaper_setter.sh
+share/icons/hicolor/scalable/apps/clifm.svg
+share/locale/es/LC_MESSAGES/clifm.mo
+share/man/man1/clifm.1.gz
+share/zsh/site-functions/_clifm


More information about the dev-commits-ports-main mailing list