* execlp
@ 2011-11-22 16:06 Paul Emsley
2011-11-23 5:47 ` execlp Nala Ginrut
0 siblings, 1 reply; 9+ messages in thread
From: Paul Emsley @ 2011-11-22 16:06 UTC (permalink / raw)
To: guile-user
Hi,
I am trying to see if there is a way to determine if a program is in the
path (i.e. a bit like "which"), returning a #t or #f answer. I was
looking execl and execlp.
The documentation for execl says:
> Executes the file named by path as a new process image
what is path ? I'm guessing that that should be "filename".
While playing around, I notice that
(execlp "ls")
produces a core dump.
My question is then, *is* there a way to determine if a string is
executable? (And if so, how? :-)
Thanks,
Paul.
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-22 16:06 execlp Paul Emsley
@ 2011-11-23 5:47 ` Nala Ginrut
2011-11-23 5:57 ` execlp Nala Ginrut
2011-11-23 12:16 ` execlp Paul Emsley
0 siblings, 2 replies; 9+ messages in thread
From: Nala Ginrut @ 2011-11-23 5:47 UTC (permalink / raw)
To: Paul Emsley, guile-user
[-- Attachment #1: Type: text/plain, Size: 802 bytes --]
I think there's a bug.
(execlp "ls" "") will access.
Since the second parameter is optional, scm_execlp doesn't handle exec_argv
unbounded situation.
On Wed, Nov 23, 2011 at 12:06 AM, Paul Emsley <paul.emsley@bioch.ox.ac.uk>wrote:
>
> Hi,
>
> I am trying to see if there is a way to determine if a program is in the
> path (i.e. a bit like "which"), returning a #t or #f answer. I was looking
> execl and execlp.
>
> The documentation for execl says:
>
> > Executes the file named by path as a new process image
>
> what is path ? I'm guessing that that should be "filename".
>
> While playing around, I notice that
>
> (execlp "ls")
>
> produces a core dump.
>
> My question is then, *is* there a way to determine if a string is
> executable? (And if so, how? :-)
>
> Thanks,
>
> Paul.
>
>
>
>
>
[-- Attachment #2: Type: text/html, Size: 1253 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 5:47 ` execlp Nala Ginrut
@ 2011-11-23 5:57 ` Nala Ginrut
2011-11-23 12:16 ` execlp Paul Emsley
1 sibling, 0 replies; 9+ messages in thread
From: Nala Ginrut @ 2011-11-23 5:57 UTC (permalink / raw)
To: Paul Emsley, guile-user
[-- Attachment #1: Type: text/plain, Size: 1078 bytes --]
Well, I noticed your second question. ;-)
The common method to determine a executable file is stat:perms, you may
check it out in the manual for details.
On Wed, Nov 23, 2011 at 1:47 PM, Nala Ginrut <nalaginrut@gmail.com> wrote:
> I think there's a bug.
> (execlp "ls" "") will access.
> Since the second parameter is optional, scm_execlp doesn't handle
> exec_argv unbounded situation.
>
>
> On Wed, Nov 23, 2011 at 12:06 AM, Paul Emsley <paul.emsley@bioch.ox.ac.uk>wrote:
>
>>
>> Hi,
>>
>> I am trying to see if there is a way to determine if a program is in the
>> path (i.e. a bit like "which"), returning a #t or #f answer. I was looking
>> execl and execlp.
>>
>> The documentation for execl says:
>>
>> > Executes the file named by path as a new process image
>>
>> what is path ? I'm guessing that that should be "filename".
>>
>> While playing around, I notice that
>>
>> (execlp "ls")
>>
>> produces a core dump.
>>
>> My question is then, *is* there a way to determine if a string is
>> executable? (And if so, how? :-)
>>
>> Thanks,
>>
>> Paul.
>>
>>
>>
>>
>>
>
[-- Attachment #2: Type: text/html, Size: 1778 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 5:47 ` execlp Nala Ginrut
2011-11-23 5:57 ` execlp Nala Ginrut
@ 2011-11-23 12:16 ` Paul Emsley
2011-11-23 12:22 ` execlp Nala Ginrut
` (2 more replies)
1 sibling, 3 replies; 9+ messages in thread
From: Paul Emsley @ 2011-11-23 12:16 UTC (permalink / raw)
To: guile-user
Hi Nala Ginrut,
Thanks for your reply.
I suspect I expressed myself poorly. (execlp "ls" "") replaces guile
with "ls", which lists my files and returns me to the shell.
What is some-function, where some-function works like this:
(some-function "ls")
-> "/bin/ls" (I'd settle for #t")
(some-function "asdfasdf")
-> #f
I thought that execl or its friends would be the way to answer that
question...
Thanks,
Paul.
On 23/11/11 05:47, Nala Ginrut wrote:
> I think there's a bug.
> (execlp "ls" "") will access.
> Since the second parameter is optional, scm_execlp doesn't handle
> exec_argv unbounded situation.
>
>
> On Wed, Nov 23, 2011 at 12:06 AM, Paul Emsley
> <paul.emsley@bioch.ox.ac.uk <mailto:paul.emsley@bioch.ox.ac.uk>> wrote:
>
>
> Hi,
>
> I am trying to see if there is a way to determine if a program is
> in the path (i.e. a bit like "which"), returning a #t or #f
> answer. I was looking execl and execlp.
>
> The documentation for execl says:
>
> > Executes the file named by path as a new process image
>
> what is path ? I'm guessing that that should be "filename".
>
> While playing around, I notice that
>
> (execlp "ls")
>
> produces a core dump.
>
> My question is then, *is* there a way to determine if a string is
> executable? (And if so, how? :-)
>
> Thanks,
>
> Paul.
>
>
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 12:16 ` execlp Paul Emsley
@ 2011-11-23 12:22 ` Nala Ginrut
2011-11-23 12:28 ` execlp Nala Ginrut
2011-11-23 19:18 ` execlp Thien-Thi Nguyen
2 siblings, 0 replies; 9+ messages in thread
From: Nala Ginrut @ 2011-11-23 12:22 UTC (permalink / raw)
To: Paul Emsley; +Cc: guile-user
[-- Attachment #1: Type: text/plain, Size: 1672 bytes --]
Well, I'm glad to help. ;-)
And I think any "Segment Fault" must be a bug. So I sent a letter for this
in guile-dev.
On Wed, Nov 23, 2011 at 8:16 PM, Paul Emsley <paul.emsley@bioch.ox.ac.uk>wrote:
> Hi Nala Ginrut,
>
> Thanks for your reply.
>
> I suspect I expressed myself poorly. (execlp "ls" "") replaces guile with
> "ls", which lists my files and returns me to the shell.
>
> What is some-function, where some-function works like this:
>
> (some-function "ls")
> -> "/bin/ls" (I'd settle for #t")
> (some-function "asdfasdf")
> -> #f
>
> I thought that execl or its friends would be the way to answer that
> question...
>
> Thanks,
>
> Paul.
>
>
>
> On 23/11/11 05:47, Nala Ginrut wrote:
>
>> I think there's a bug.
>> (execlp "ls" "") will access.
>> Since the second parameter is optional, scm_execlp doesn't handle
>> exec_argv unbounded situation.
>>
>>
>> On Wed, Nov 23, 2011 at 12:06 AM, Paul Emsley <paul.emsley@bioch.ox.ac.uk<mailto:
>> paul.emsley@bioch.ox.**ac.uk <paul.emsley@bioch.ox.ac.uk>>> wrote:
>>
>>
>> Hi,
>>
>> I am trying to see if there is a way to determine if a program is
>> in the path (i.e. a bit like "which"), returning a #t or #f
>> answer. I was looking execl and execlp.
>>
>> The documentation for execl says:
>>
>> > Executes the file named by path as a new process image
>>
>> what is path ? I'm guessing that that should be "filename".
>>
>> While playing around, I notice that
>>
>> (execlp "ls")
>>
>> produces a core dump.
>>
>> My question is then, *is* there a way to determine if a string is
>> executable? (And if so, how? :-)
>>
>> Thanks,
>>
>> Paul.
>>
>>
>>
>>
>>
>>
>
>
[-- Attachment #2: Type: text/html, Size: 2581 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 12:16 ` execlp Paul Emsley
2011-11-23 12:22 ` execlp Nala Ginrut
@ 2011-11-23 12:28 ` Nala Ginrut
2011-11-23 14:03 ` execlp rixed
2011-11-23 19:18 ` execlp Thien-Thi Nguyen
2 siblings, 1 reply; 9+ messages in thread
From: Nala Ginrut @ 2011-11-23 12:28 UTC (permalink / raw)
To: Paul Emsley; +Cc: guile-user
[-- Attachment #1: Type: text/plain, Size: 807 bytes --]
On Wed, Nov 23, 2011 at 8:16 PM, Paul Emsley <paul.emsley@bioch.ox.ac.uk>wrote:
> Hi Nala Ginrut,
>
> Thanks for your reply.
>
> I suspect I expressed myself poorly. (execlp "ls" "") replaces guile with
> "ls", which lists my files and returns me to the shell.
>
> What is some-function, where some-function works like this:
>
> (some-function "ls")
> -> "/bin/ls" (I'd settle for #t")
> (some-function "asdfasdf")
> -> #f
>
> I thought that execl or its friends would be the way to answer that
> question...
>
>
I think there's no such a given function in Guile to do this.
But you can make it in a easy way in Guile:
(catch 'system-error
(lambda () (execlp "asdfasdf"))
(lambda (k . e)
(format #t "oh no~%~")))
PS: Maybe you need #f instead of "format" according to your letter. ;-)
[-- Attachment #2: Type: text/html, Size: 1336 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 12:28 ` execlp Nala Ginrut
@ 2011-11-23 14:03 ` rixed
2011-11-23 14:38 ` execlp Nala Ginrut
0 siblings, 1 reply; 9+ messages in thread
From: rixed @ 2011-11-23 14:03 UTC (permalink / raw)
To: guile-user
-[ Wed, Nov 23, 2011 at 08:28:56PM +0800, Nala Ginrut ]----
> I think there's no such a given function in Guile to do this.
> But you can make it in a easy way in Guile:
> (catch 'system-error
> (lambda () (execlp "asdfasdf"))
> (lambda (k . e)
> (format #t "oh no~%~")))
>
> PS: Maybe you need #f instead of "format" according to your letter. ;-)
It's my understanding that the OP does not want to actually run the
program but merely knows either the file is in the PATH or not.
I guess some-function would be something like :
(use-modules (srfi srfi-1)) ; for any
(define (in-path? f)
(let ((path (string-split (getenv "PATH") #\:))
(make-absolute (lambda (path) (string-append path "/" f))))
(any file-exists? (map make-absolute path))))
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 14:03 ` execlp rixed
@ 2011-11-23 14:38 ` Nala Ginrut
0 siblings, 0 replies; 9+ messages in thread
From: Nala Ginrut @ 2011-11-23 14:38 UTC (permalink / raw)
To: rixed, guile-user, Paul Emsley
[-- Attachment #1: Type: text/plain, Size: 1395 bytes --]
On Wed, Nov 23, 2011 at 10:03 PM, <rixed@happyleptic.org> wrote:
> -[ Wed, Nov 23, 2011 at 08:28:56PM +0800, Nala Ginrut ]----
> > I think there's no such a given function in Guile to do this.
> > But you can make it in a easy way in Guile:
> > (catch 'system-error
> > (lambda () (execlp "asdfasdf"))
> > (lambda (k . e)
> > (format #t "oh no~%~")))
> >
> > PS: Maybe you need #f instead of "format" according to your letter. ;-)
>
> It's my understanding that the OP does not want to actually run the
> program but merely knows either the file is in the PATH or not.
>
> I guess some-function would be something like :
>
> (use-modules (srfi srfi-1)) ; for any
> (define (in-path? f)
> (let ((path (string-split (getenv "PATH") #\:))
> (make-absolute (lambda (path) (string-append path "/"
> f))))
> (any file-exists? (map make-absolute path))))
>
>
>
Well, I realized that Paul want this some-function to detect whether file
can be executed.
[quote] My question is then, *is* there a way to determine if a string is
executable? (And if so, how? :-) .[/quote]
I confess that I didn't quite understand this question.
So I guess there're two alternatives:
1. He needs some-function to detect each file in a path an return the
result or #f;
2. He needs some-function to handle the error if a certain string can not
be executed.
[-- Attachment #2: Type: text/html, Size: 2632 bytes --]
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: execlp
2011-11-23 12:16 ` execlp Paul Emsley
2011-11-23 12:22 ` execlp Nala Ginrut
2011-11-23 12:28 ` execlp Nala Ginrut
@ 2011-11-23 19:18 ` Thien-Thi Nguyen
2 siblings, 0 replies; 9+ messages in thread
From: Thien-Thi Nguyen @ 2011-11-23 19:18 UTC (permalink / raw)
To: Paul Emsley; +Cc: guile-user
() Paul Emsley <paul.emsley@bioch.ox.ac.uk>
() Wed, 23 Nov 2011 12:16:47 +0000
What is some-function, where some-function works like this:
(some-function "ls")
-> "/bin/ls" (I'd settle for #t")
(some-function "asdfasdf")
-> #f
You can try something like:
(use-modules (srfi srfi-13) (srfi srfi-14))
(define (some-function program)
(and=> (search-path (string-tokenize (getenv "PATH")
(char-set-complement
(char-set #\:)))
program)
(lambda (filename)
(and (access? filename X_OK)
filename))))
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2011-11-23 19:18 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-11-22 16:06 execlp Paul Emsley
2011-11-23 5:47 ` execlp Nala Ginrut
2011-11-23 5:57 ` execlp Nala Ginrut
2011-11-23 12:16 ` execlp Paul Emsley
2011-11-23 12:22 ` execlp Nala Ginrut
2011-11-23 12:28 ` execlp Nala Ginrut
2011-11-23 14:03 ` execlp rixed
2011-11-23 14:38 ` execlp Nala Ginrut
2011-11-23 19:18 ` execlp Thien-Thi Nguyen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).