12-16-2009
Hi Jim,
Ok, I'll start from scratch with what I'm doing and perhaps there's an easier way you might see.
I'm writing an application that uses vi-like keybindings and has a command-mode similar to vi. Specifically, in command mode one can do a "write" just like in vi
:w
-or- to save the current playlist (this is a music application), one can do
:w filename
If they specificy a filename such as
:w foo\ bar
or,
:w "foo bar"
In these cases, I'd obviously like to be able to parse the parameters correctly (i.e. recognize that "foo\ bar" is one string, not two).
There are other a few other commands I have (and I'm currently working on a few more), that take multiple parameters, and I'd like to be able to handle spaces and quoting correctly for them.
About my current setup:
All of the command functions take two params, "int argc" and "char *argv[]", just like a regular "main" function. I then have an array of strings and function pointers (to these functions) that behaves essentially like a path.
When a user is in command mode and enters a string, I parse that string into a (bad) argc/argv structure, and then search the path for a matching named record, and if found, execute the function with the argc/argv that I built.
Does this help make clear at least my setup and what I'm asking about? I can point you to code if you would like.
Thanks again,
-Ryan
9 More Discussions You Might Find Interesting
1. Programming
I searched on the forums. No advises.
I am using a previous source code. I changed the main function main(int argc, char **argv) in a function misc(int argc, char **argv). How do you use the argc and argv parameters? This is how I am calling the function :
char param;
strcat(param,"wgrib ");... (4 Replies)
Discussion started by: Akeson Chihiro
4 Replies
2. Programming
Is it possible to use the dbx debugger with the CL options for the executable ?
Say you have created a executable called myfunc which can take string arguments at run-time. You run it like this
./myfunc Hello World
where Hello and World are the string arguments
My question is whether... (1 Reply)
Discussion started by: JamesGoh
1 Replies
3. Programming
Hi C experts,
I have the following code for adding command line option for a program
int main (argc, argv)
int argc;
char *argv;
{
char *mem_type; //memory type
char *name; //name of the memory
int addr; //address bits
int data; ... (5 Replies)
Discussion started by: return_user
5 Replies
4. Programming
i have a function that's parameter is char *s
and in the main function i am sending that function &(argv), but i dont think this is working, how can i fix this?
can i cast it to be a string or something?
is there a way i can create a new string thats exactly what argv is equal to... (6 Replies)
Discussion started by: omega666
6 Replies
5. Shell Programming and Scripting
Hi Folks,
I've prepared a shell script that takes action based on arguments and number of arguments..sample code like:
ARGV=("$@")
ARGC=("$#")
case ${ARGV} in
abc)
if ; then
......
else
printf "\nInvalid number of arguments, please check the inputs and... (2 Replies)
Discussion started by: SBC
2 Replies
6. Shell Programming and Scripting
Hi guys,
i'm trying to solve this problem.
I have to run something like
cat file1.txt | awk -f script.awk 10
if i'm in the awk script, how can i take the parameter :10 ??:wall:
i try something like :
BEGIN{
var=argv
}
{..}
END{..}
but obviously is not correct... (5 Replies)
Discussion started by: heaven25
5 Replies
7. UNIX for Advanced & Expert Users
All of my machines (various open source derivatives on x86 and amd64) store argv above the stack (at a higher memory address). I am curious to learn if any systems store argv below the stack (at a lower memory address).
I am particularly interested in proprietary Unices, such as Solaris, HP-UX,... (9 Replies)
Discussion started by: alister
9 Replies
8. Programming
Hello to all,
Here is my situation. Some time in the mid-80's I stumbled across a small white programming book - can't remember the name but it was unique in that it started right out giving instructions on creating building blocks in code as a foundation for a complete system. The book was... (2 Replies)
Discussion started by: jozefn
2 Replies
9. Homework & Coursework Questions
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
First, create a "hello world" program that prints "Hello World". But NOW, instead use argc to verify that a... (9 Replies)
Discussion started by: miniviking10
9 Replies
LEARN ABOUT DEBIAN
mojo::path
Mojo::Path(3pm) User Contributed Perl Documentation Mojo::Path(3pm)
NAME
Mojo::Path - Path
SYNOPSIS
use Mojo::Path;
my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html');
shift @{$path->parts};
say $path;
DESCRIPTION
Mojo::Path is a container for URL paths.
ATTRIBUTES
Mojo::Path implements the following attributes.
"leading_slash"
my $leading_slash = $path->leading_slash;
$path = $path->leading_slash(1);
Path has a leading slash.
"parts"
my $parts = $path->parts;
$path = $path->parts([qw(foo bar baz)]);
The path parts.
# Part with slash
push @{$path->parts}, 'foo/bar';
"trailing_slash"
my $trailing_slash = $path->trailing_slash;
$path = $path->trailing_slash(1);
Path has a trailing slash.
METHODS
Mojo::Path inherits all methods from Mojo::Base and implements the following new ones.
"new"
my $path = Mojo::Path->new;
my $path = Mojo::Path->new('/foo%2Fbar%3B/baz.html');
Construct a new Mojo::Path object.
"canonicalize"
$path = $path->canonicalize;
Canonicalize path.
# "/foo/baz"
Mojo::Path->new('/foo/bar/../baz')->canonicalize;
"clone"
my $clone = $path->clone;
Clone path.
"contains"
my $success = $path->contains('/foo');
Check if path contains given prefix.
# True
Mojo::Path->new('/foo/bar')->contains('/');
Mojo::Path->new('/foo/bar')->contains('/foo');
Mojo::Path->new('/foo/bar')->contains('/foo/bar');
# False
Mojo::Path->new('/foo/bar')->contains('/f');
Mojo::Path->new('/foo/bar')->contains('/bar');
Mojo::Path->new('/foo/bar')->contains('/whatever');
"merge"
$path = $path->merge('/foo/bar');
$path = $path->merge('foo/bar');
$path = $path->merge(Mojo::Path->new('foo/bar'));
Merge paths.
# "/baz/yada"
Mojo::Path->new('/foo/bar')->merge('/baz/yada');
# "/foo/baz/yada"
Mojo::Path->new('/foo/bar')->merge('baz/yada');
# "/foo/bar/baz/yada"
Mojo::Path->new('/foo/bar/')->merge('baz/yada');
"parse"
$path = $path->parse('/foo%2Fbar%3B/baz.html');
Parse path. Note that %2F will be treated as "/" for security reasons.
"to_abs_string"
my $string = $path->to_abs_string;
Turn path into an absolute string.
"to_string"
my $string = $path->to_string;
Turn path into a string.
SEE ALSO
Mojolicious, Mojolicious::Guides, <http://mojolicio.us>.
perl v5.14.2 2012-09-05 Mojo::Path(3pm)