summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-04-23 22:10:48 +0200
committerYorhel <git@yorhel.nl>2009-04-23 22:12:50 +0200
commit731bfccfb5705c531bba506a859a2ff967da82cb (patch)
tree65f7acb462511427ffeee339b60392e6fea7d0ea
parent5c6f057840644029f9cc5bd12f8083e07836031f (diff)
Removed PATH_MAX reliance in main.c
-rw-r--r--src/main.c29
1 files changed, 13 insertions, 16 deletions
diff --git a/src/main.c b/src/main.c
index de8c8a3..754fc39 100644
--- a/src/main.c
+++ b/src/main.c
@@ -30,6 +30,7 @@
#include "delete.h"
#include "browser.h"
#include "help.h"
+#include "path.h"
#include <stdlib.h>
#include <string.h>
@@ -80,14 +81,11 @@ int input_handle(int wait) {
/* parse command line */
-void argv_parse(int argc, char **argv, char *dir) {
+char *argv_parse(int argc, char **argv) {
int i, j, len;
+ char *dir = NULL;
- /* load defaults */
- memset(dir, 0, PATH_MAX);
- getcwd(dir, PATH_MAX);
-
- /* read from commandline */
+ /* read from commandline */
for(i=1; i<argc; i++) {
if(argv[i][0] == '-') {
/* flags requiring arguments */
@@ -128,24 +126,23 @@ void argv_parse(int argc, char **argv, char *dir) {
printf("Unknown option: -%c\nSee '%s -h' for more information.\n", argv[i][j], argv[0]);
exit(1);
}
- } else {
- strncpy(dir, argv[i], PATH_MAX);
- if(dir[PATH_MAX - 1] != 0) {
- printf("Error: path length exceeds PATH_MAX\n");
- exit(1);
- }
- dir[PATH_MAX - 1] = 0;
- }
+ } else
+ dir = argv[i];
}
+ return dir;
}
/* main program */
int main(int argc, char **argv) {
- char dir[PATH_MAX];
- argv_parse(argc, argv, dir);
+ char *dir;
+
+ if((dir = argv_parse(argc, argv)) == NULL)
+ dir = path_real(".");
calc_init(dir, NULL);
+ if(dir < argv[0] || dir > argv[argc])
+ free(dir);
initscr();
cbreak();