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-all
mailing list