GNU bug report logs - #61708
28.2; file-modes-symbolic-to-number inconsistency

Previous Next

Package: emacs;

Reported by: Thierry Volpiatto <thievol <at> posteo.net>

Date: Wed, 22 Feb 2023 13:59:02 UTC

Severity: normal

Found in version 28.2

To reply to this bug, email your comments to 61708 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 13:59:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Thierry Volpiatto <thievol <at> posteo.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Wed, 22 Feb 2023 13:59:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 13:49:08 +0000
Hello all,

It is unclear how to use MODES argument of
file-modes-symbolic-to-number, actually the correct way to use it is the
second example below, I found it by reading the read-file-modes code and
saw it removes all "-" to setup MODES arg to pass to
file-modes-symbolic-to-number. I was surprized to see the first example
is not supported, thus the docstring of file-modes-symbolic-to-number is
pretty unclear:

,----
| MODES is the string to convert, it should match
| "[ugoa]*([+-=][rwxXstugo]*)+,...".
`----

At least an example in docstring or manual would be welcome.

(format "%o" (file-modes-symbolic-to-number "u=rwx,g=r-x,o=---"))
"740"
(format "%o" (file-modes-symbolic-to-number "u=rwx,g=rx,o="))
"750"

Thanks.


In GNU Emacs 28.2 (build 1, x86_64-pc-linux-gnu, Motif Version 2.3.8, cairo version 1.16.0)
 of 2023-02-14 built on IPad-S340
Windowing system distributor 'The X.Org Foundation', version 11.0.12101003
System Description: Linux Mint 21.1

Configured using:
 'configure CFLAGS=-O8 --with-mailutils --with-cairo --without-dbus
 --without-gconf --without-gsettings --with-x-toolkit=motif'

Configured features:
ACL CAIRO FREETYPE GIF GLIB GMP GNUTLS GPM HARFBUZZ JPEG JSON LCMS2
LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE
XIM XPM MOTIF ZLIB

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: 

Minor modes in effect:
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  psession-mode: t
  psession-savehist-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  global-git-gutter-mode: t
  display-time-mode: t
  winner-mode: t
  tv-save-place-mode: t
  helm-epa-mode: t
  helm-descbinds-mode: t
  helm-top-poll-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm-popup-tip-mode: t
  async-bytecomp-package-mode: t
  dired-async-mode: t
  minibuffer-depth-indicate-mode: t
  gcmh-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow epa-mail face-remap emacsbug helm-ring tabify add-log which-func
cus-start helm-imenu helm-dabbrev cl-indent rect smerge-mode eieio-opt
speedbar ezimage dframe shortdoc helm-command helm-elisp helm-eval
cl-print edebug backtrace helm-x-files helm-for-files tramp-cache
tramp-sh helm-bookmark helm-info term ehelp helm-apt image-file
image-converter char-fold emms-config emms-librefm-stream
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history
emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms-cue emms-mode-line-icon emms-browser emms-volume
emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache
emms-info-native bindat emms-info-exiftool emms-info-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms-playing-time emms-info emms-later-do emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat emms-auto helm-external mm-archive sort
smiley gnus-cite mail-extr qp gnus-async gnus-bcklg gnus-ml disp-table
nndraft nnmh nnfolder cl-extra epa-file gnutls network-stream nsm
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg nntp
gnus-cache nnir addressbook-bookmark tv-mu4e-config config-w3m
mu4e-contrib eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg
esh-module esh-groups esh-util mu4e-patch mu4e mu4e-org org-config
ob-gnuplot org-crypt org ob ob-tangle ob-ref ob-lob ob-table ob-exp
org-macro org-footnote org-src ob-comint org-pcomplete org-list
org-faces org-entities noutline outline org-version ob-emacs-lisp
ob-core ob-eval org-table oc-basic bibtex ol rx org-keys oc org-compat
org-macs org-loaddefs find-func mu4e-notification notifications
mu4e-main mu4e-view gnus-art mm-uu mml2015 mm-view mml-smime smime dig
gnus-sum gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range
gnus-win gnus nnheader appt diary-lib diary-loaddefs cal-menu calendar
cal-loaddefs mu4e-headers mu4e-compose mu4e-draft mu4e-actions smtpmail
sendmail mu4e-search mu4e-lists mu4e-bookmarks mu4e-mark mu4e-message
shr kinsoku svg dom flow-fill hl-line mu4e-contacts mu4e-update
mu4e-folders mu4e-context mu4e-query-items mu4e-server mu4e-modeline
mu4e-vars mu4e-helpers mu4e-config mu4e-window bookmark ido message rmc
puny rfc822 mml mml-sec gnus-util rmail rmail-loaddefs mm-decode
mm-bodies mm-encode mailabbrev mail-utils gmm-utils mailheader
mu4e-obsolete ffap tramp-archive tramp-gvfs dbus helm-firefox helm-net
xml helm-ls-git vc-git diff-mode vc vc-dispatcher flymake-shellcheck
flymake-proc flymake project warnings sh-script smie executable checkdoc
lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr thingatpt bug-reference naquadah-theme server imenu psession
frameset undo-tree diff queue pcase git-gutter mule-util dired-extension
time winner describe-variable help-fns radix-tree help-mode tv-utils
tv-save-place.el advice init-helm epa derived epg rfc6068 epg-config
helm-epa isl helm-descbinds all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons cus-edit pp wid-edit helm-sys popup
helm-adaptive helm-mode helm-misc helm-files image-dired image-mode exif
filenotify tramp tramp-loaddefs trampver tramp-integration files-x
tramp-compat shell pcomplete parse-time iso8601 time-date ls-lisp
helm-buffers helm-occur helm-tags helm-locate helm-grep wgrep-helm wgrep
grep compile text-property-search comint ring helm-regexp format-spec
ansi-color helm-utils helm-help helm-types helm-extensions-autoloads
helm-autoloads helm helm-global-bindings helm-easymenu helm-core
easy-mmode async-bytecomp helm-source helm-multi-match helm-lib
dired-async async dired-aux dired dired-loaddefs mb-depth edmacro kmacro
avoid cus-load gcmh info w3m-load package browse-url url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util mailcap url-handlers url-parse auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer cl-generic
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech
european ethiopic indian cyrillic chinese composite emoji-zwj charscript
charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray
cl-preloaded nadvice button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads inotify
lcms2 dynamic-setting font-render-setting cairo motif x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 869050 440363)
 (symbols 48 37684 5)
 (strings 32 231743 75250)
 (string-bytes 1 11819997)
 (vectors 16 95498)
 (vector-slots 8 1929698 276469)
 (floats 8 5386 4131)
 (intervals 56 27471 12074)
 (buffers 992 160))
<#secure method=pgpmime mode=sign>

-- 
Thierry




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 14:20:02 GMT) Full text and rfc822 format available.

Message #8 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: 61708 <at> debbugs.gnu.org
Subject: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 14:16:53 +0000
[Message part 1 (text/plain, inline)]
Here a simple patch to summarize what's wrong:

diff --git a/lisp/files.el b/lisp/files.el
index 5b989902bc3..576eb22c49f 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -8363,6 +8363,7 @@ If CHAR is in [Xugo], the value is taken from FROM (or 0 if omitted)."
   (cond ((eq char ?r) #o0444)
 	((eq char ?w) #o0222)
 	((eq char ?x) #o0111)
+        ((eq char ?-) #o0000)
 	((eq char ?s) #o6000)
 	((eq char ?t) #o1000)
 	;; Rights relative to the previous file modes.
@@ -8393,7 +8394,7 @@ as in \"og+rX-w\"."
       (let ((num-right 0)
 	    char-right)
 	(while (memq (setq char-right (pop list-rights))
-		     '(?r ?w ?x ?X ?s ?t ?u ?g ?o))
+		     '(?r ?w ?x ?X ?s ?t ?u ?g ?o ?-))
 	  (setq num-right
 		(logior num-right
 			(file-modes-char-to-right char-right num-rights))))

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 14:27:01 GMT) Full text and rfc822 format available.

Message #11 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> suse.de>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 15:26:09 +0100
On Feb 22 2023, Thierry Volpiatto wrote:

> (format "%o" (file-modes-symbolic-to-number "u=rwx,g=r-x,o=---"))
> "740"

This is the correct interpretation of the mode string, with "g=r-x"
meaning the same as "g=r,g-x" or just "g=r".

See
https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html
for the full syntax.

-- 
Andreas Schwab, SUSE Labs, schwab <at> suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 15:13:02 GMT) Full text and rfc822 format available.

Message #14 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Andreas Schwab <schwab <at> suse.de>
Cc: 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 14:58:29 +0000
[Message part 1 (text/plain, inline)]
Andreas Schwab <schwab <at> suse.de> writes:

> On Feb 22 2023, Thierry Volpiatto wrote:
>
>> (format "%o" (file-modes-symbolic-to-number "u=rwx,g=r-x,o=---"))
>> "740"
>
> This is the correct interpretation of the mode string, with "g=r-x"
> meaning the same as "g=r,g-x" or just "g=r".

So how do you interpret this: "drwxr-x---" (from file-attributes)?
"u=?,g=?,o=?" to pass it to file-modes-symbolic-to-number?

(nth 8 (file-attributes "/home/user"))
"drwxr-x---"

(read-file-modes nil "/home/user")
#o750

Thanks.

> See
> https://pubs.opengroup.org/onlinepubs/9699919799/utilities/chmod.html
> for the full syntax.


-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 15:46:01 GMT) Full text and rfc822 format available.

Message #17 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> suse.de>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 16:45:13 +0100
On Feb 22 2023, Thierry Volpiatto wrote:

> So how do you interpret this: "drwxr-x---" (from file-attributes)?

This is not a symbolic mode.

-- 
Andreas Schwab, SUSE Labs, schwab <at> suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 17:07:01 GMT) Full text and rfc822 format available.

Message #20 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Andreas Schwab <schwab <at> suse.de>
Cc: 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 17:03:56 +0000
[Message part 1 (text/plain, inline)]
Andreas Schwab <schwab <at> suse.de> writes:

> On Feb 22 2023, Thierry Volpiatto wrote:
>
>> So how do you interpret this: "drwxr-x---" (from file-attributes)?
>
> This is not a symbolic mode.

(file-modes-number-to-symbolic #o750)
=>"-rwxr-x---"

I will reformulate my question:

How one convert the output of (nth 8 (file-attributes "/home/user")) to
numeric mode?

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 17:12:02 GMT) Full text and rfc822 format available.

Message #23 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Gregory Heytings <gregory <at> heytings.org>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 17:11:51 +0000
>
> How one convert the output of (nth 8 (file-attributes "/home/user")) to 
> numeric mode?
>

(file-modes "/home/user")





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 17:58:02 GMT) Full text and rfc822 format available.

Message #26 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Gregory Heytings <gregory <at> heytings.org>
Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 17:44:01 +0000
[Message part 1 (text/plain, inline)]
Gregory Heytings <gregory <at> heytings.org> writes:

>>
>> How one convert the output of (nth 8 (file-attributes "/home/user"))
>> to numeric mode?
>>
>
> (file-modes "/home/user")

Yes, thanks I know this one, what I want to convert is e.g. "-rwxr-x---"
to number.

(file-modes-number-to-symbolic #o750)
"-rwxr-x---"
Means
"-|rwx|r-x|---"
rwx for user, rx for group and nothing for others.

What I mean is that file-modes-symbolic-to-number returns the right
value with MODES "u=rwx,g=rx,o=" but the wrong value with
"u=rwx,g=r-x,o=---".
This is why read-file-modes remove the "-" for passing the string as
MODES to file-modes-symbolic-to-number.

So shouldn't file-modes-symbolic-to-number supports "u=rwx,g=r-x,o=---"
and "u=rwx,g=rx,o=" in the same way.

I ask because I had to read code to understand this as I can't
understand the docstring.

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Wed, 22 Feb 2023 21:41:01 GMT) Full text and rfc822 format available.

Message #29 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Gregory Heytings <gregory <at> heytings.org>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Wed, 22 Feb 2023 21:40:21 +0000
>>> How one convert the output of (nth 8 (file-attributes "/home/user")) 
>>> to numeric mode?
>>
>> (file-modes "/home/user")
>
> Yes, thanks I know this one, what I want to convert is e.g. "-rwxr-x---" 
> to number.
>

(defun symbolic-mode-to-number (mode)
  (string-to-number
   (replace-regexp-in-string
    "[^0]" "1"
    (string-replace "-" "0" mode))
   2))





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 05:13:02 GMT) Full text and rfc822 format available.

Message #32 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Gregory Heytings <gregory <at> heytings.org>
Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 04:44:10 +0000
[Message part 1 (text/plain, inline)]
Gregory Heytings <gregory <at> heytings.org> writes:

>>>> How one convert the output of (nth 8 (file-attributes
>>>> "/home/user")) to numeric mode?
>>>
>>> (file-modes "/home/user")
>>
>> Yes, thanks I know this one, what I want to convert is
>> e.g. "-rwxr-x---" to number.
>>
>
> (defun symbolic-mode-to-number (mode)
>   (string-to-number
>    (replace-regexp-in-string
>     "[^0]" "1"
>     (string-replace "-" "0" mode))
>    2))

Nice! I never used the BASE argument of string-to-number probably due to
my catastrophic math level :-), however this is very basic and doesn't
cover modes like "-rwxrwxrwt" or "-rwsr-xr-x".

I already wrote the needed functions for my needs (helm), however what I
had like is to clarify the usage of `file-modes-symbolic-to-number' in
docstring (examples?).
As Andrea pointed the MODES argument handle (+-=) like chmod would do
i.e. the function returns the numeric mode that for example chmod would set on
a file. Once you know it that's fine , you remove the "-" in MODES like
read-file-modes does otherwise you may think it interpret the mode that
a file already has.

Thanks.

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 06:09:01 GMT) Full text and rfc822 format available.

Message #35 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Gregory Heytings <gregory <at> heytings.org>
Cc: thievol <at> posteo.net, schwab <at> suse.de, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 08:08:52 +0200
> Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
> Date: Wed, 22 Feb 2023 21:40:21 +0000
> From: Gregory Heytings <gregory <at> heytings.org>
> 
> 
> >>> How one convert the output of (nth 8 (file-attributes "/home/user")) 
> >>> to numeric mode?
> >>
> >> (file-modes "/home/user")
> >
> > Yes, thanks I know this one, what I want to convert is e.g. "-rwxr-x---" 
> > to number.
> >
> 
> (defun symbolic-mode-to-number (mode)
>    (string-to-number
>     (replace-regexp-in-string
>      "[^0]" "1"
>      (string-replace "-" "0" mode))
>     2))

Maybe we should have a knob in file-attributes or in
file-attribute-modes to return the modes as either a number or in
symbolic form suitable for file-modes-symbolic-to-number?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 07:02:01 GMT) Full text and rfc822 format available.

Message #38 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Thierry Volpiatto <thievol <at> posteo.net>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: schwab <at> suse.de, Gregory Heytings <gregory <at> heytings.org>,
 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 07:00:55 +0000
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes:

>> Cc: Andreas Schwab <schwab <at> suse.de>, 61708 <at> debbugs.gnu.org
>> Date: Wed, 22 Feb 2023 21:40:21 +0000
>> From: Gregory Heytings <gregory <at> heytings.org>
>> 
>> 
>> >>> How one convert the output of (nth 8 (file-attributes "/home/user")) 
>> >>> to numeric mode?
>> >>
>> >> (file-modes "/home/user")
>> >
>> > Yes, thanks I know this one, what I want to convert is e.g. "-rwxr-x---" 
>> > to number.
>> >
>> 
>> (defun symbolic-mode-to-number (mode)
>>    (string-to-number
>>     (replace-regexp-in-string
>>      "[^0]" "1"
>>      (string-replace "-" "0" mode))
>>     2))
>
> Maybe we should have a knob in file-attributes or in
> file-attribute-modes to return the modes as either a number or in
> symbolic form suitable for file-modes-symbolic-to-number?

That's a good idea.

-- 
Thierry
[signature.asc (application/pgp-signature, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 09:15:01 GMT) Full text and rfc822 format available.

Message #41 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> suse.de>
To: Thierry Volpiatto <thievol <at> posteo.net>
Cc: 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 10:14:41 +0100
On Feb 22 2023, Thierry Volpiatto wrote:

> (file-modes-number-to-symbolic #o750)

This function is misnamed.  It doesn't return a symbolic mode, but a
different text representation, and certainly isn't the inverse of
file-modes-symbolic-to-number.

-- 
Andreas Schwab, SUSE Labs, schwab <at> suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 09:19:02 GMT) Full text and rfc822 format available.

Message #44 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Andreas Schwab <schwab <at> suse.de>
To: Gregory Heytings <gregory <at> heytings.org>
Cc: Thierry Volpiatto <thievol <at> posteo.net>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 10:18:07 +0100
On Feb 22 2023, Gregory Heytings wrote:

> (defun symbolic-mode-to-number (mode)
>   (string-to-number
>    (replace-regexp-in-string
>     "[^0]" "1"
>     (string-replace "-" "0" mode))
>    2))

Apart from being misnamed, it doesn't handle tTsS.

-- 
Andreas Schwab, SUSE Labs, schwab <at> suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#61708; Package emacs. (Thu, 23 Feb 2023 09:28:01 GMT) Full text and rfc822 format available.

Message #47 received at 61708 <at> debbugs.gnu.org (full text, mbox):

From: Gregory Heytings <gregory <at> heytings.org>
To: Andreas Schwab <schwab <at> suse.de>
Cc: Thierry Volpiatto <thievol <at> posteo.net>, 61708 <at> debbugs.gnu.org
Subject: Re: bug#61708: 28.2; file-modes-symbolic-to-number inconsistency
Date: Thu, 23 Feb 2023 09:27:36 +0000
>> (defun symbolic-mode-to-number (mode)
>>   (string-to-number
>>    (replace-regexp-in-string
>>     "[^0]" "1"
>>     (string-replace "-" "0" mode))
>>    2))
>
> Apart from being misnamed, it doesn't handle tTsS.
>

Yes, that was just a quick PoC.  It doesn't handle the leading letter, 
either.





This bug report was last modified 1 year and 62 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.