Skip to content
Extraits de code Groupes Projets
Valider d0dbd3e2 rédigé par Etienne BRATEAU's avatar Etienne BRATEAU
Parcourir les fichiers

newci: reindent and update functions (they now expand strings beforeappend some text)

parent f9d62085
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -65,35 +65,54 @@ void newci_inputstring(char *s, int mode, char *possterm, char *term, int echote ...@@ -65,35 +65,54 @@ void newci_inputstring(char *s, int mode, char *possterm, char *term, int echote
static void goodfixname(char *name, char *ext, char *home, int force) static void goodfixname(char *name, char *ext, char *home, int force)
{ {
long i; size_t i;
int hassuffix; int hassuffix;
char STR1[256]; size_t len = strlen(name);
long FORLIM;
/* fs_zapspaces(name); */ /* fs_zapspaces(name); */
if (strlen(name) > 2 && name[0] == '*' && name[1] == '*') { if (len > 2 && name[0] == '*' && name[1] == '*')
strcpy_overlap(name, name + 2); {
sprintf(name, "%s%s", home, strcpy(STR1, name)); char *sz_tmp = malloc(sizeof(char) * len + 1);
strcpy(sz_tmp, name);
/* expand to can add home */
len += strlen(home) + 1; /* name + home + '\0' */
name = realloc(name, sizeof(char) * len);
/* Add home value before the name value */
sprintf(name, "%s%s", home, sz_tmp);
free(sz_tmp);
} }
if (force) {
if (force)
{
i = strlen(name); i = strlen(name);
while (i > 0 && name[i - 1] != '.' && name[i - 1] != '/' && name[i - 1] != ':') while (i > 0 && name[i - 1] != '.' && name[i - 1] != '/' && name[i - 1] != ':')
i--; i--;
if (i > 0 && name[i - 1] == '.') if (i > 0 && name[i - 1] == '.')
name[i - 1] = '\0'; name[i - 1] = '\0';
} }
if (*name == '\0') if (*name == '\0')
return; return;
if (name[strlen(name) - 1] == '.') {
name[strlen(name) - 1] = '\0'; i = strlen(name) - 1;
if (name[i] == '.')
{
name[i] = '\0';
return; return;
} }
if (name[strlen(name) - 1] == ':')
if (name[i] == ':')
return; return;
hassuffix = false; hassuffix = false;
FORLIM = strlen(name);
for (i = 0; i < FORLIM; i++) { len = strlen(name);
switch (name[i]) { for (i = 0; i < len; ++i)
{
switch (name[i])
{
case '/': case '/':
case ':': case ':':
...@@ -105,10 +124,13 @@ static void goodfixname(char *name, char *ext, char *home, int force) ...@@ -105,10 +124,13 @@ static void goodfixname(char *name, char *ext, char *home, int force)
break; break;
} }
} }
if (!hassuffix && *ext != '\0') if (!hassuffix && *ext != '\0')
{
name = realloc(name, sizeof(char) * (len + strlen(ext) + 2)); /* name + '.' + ext + '\0' */
sprintf(name + strlen(name), ".%s", ext); sprintf(name + strlen(name), ".%s", ext);
} }
}
void newci_fixfname(char * s, char * ext, char * home) void newci_fixfname(char * s, char * ext, char * home)
{ {
...@@ -120,10 +142,11 @@ void newci_forcefname(char *s, char *ext, char *home) ...@@ -120,10 +142,11 @@ void newci_forcefname(char *s, char *ext, char *home)
goodfixname(s, ext, home, 1); goodfixname(s, ext, home, 1);
} }
void newci_fullshellescape(char *args, char *opts) void newci_fullshellescape(char *args, char *opts)
{ {
while (isspace(*args) || *args == '!') args++; while (isspace(*args) || *args == '!')
args++;
if (fork()) if (fork())
wait(NULL); wait(NULL);
else else
...@@ -151,36 +174,40 @@ void newci_eatargument() ...@@ -151,36 +174,40 @@ void newci_eatargument()
{ {
int i; int i;
for (i = 2; i < P_argc; P_argv[i-1] = P_argv[i], i++) /* move the argmuments to the left*/
; for (i = 2; i < P_argc; ++i)
P_argv[i-1] = P_argv[i];
P_argc--; P_argc--;
} }
void newci_parseswitch(tab, size, bad) void newci_parseswitch(newci_parsetab tab, long size, char *bad)
newci_parsetab tab;
long size;
char *bad;
{ {
int i, j, found, pos = 1; int i, j, found, pos = 1;
for (i = 0; i < size; tab[i++].used = 0) for (i = 0; i < size; ++i)
; tab[i].used = 0;
*bad = '\000'; *bad = '\000';
while ((P_argc > 1) && (P_argv[1][0] == '-')) { while ((P_argc > 1) && (P_argv[1][0] == '-'))
{
found = 0; found = 0;
for (i = 0; (i < size) && (! found); i++) { for (i = 0; (i < size) && (!found); i++)
{
for (j = 0; (tab[i].switch_[j] != '\0') && (!found); j++) for (j = 0; (tab[i].switch_[j] != '\0') && (!found); j++)
if (tab[i].switch_[j] == P_argv[1][1]) if (tab[i].switch_[j] == P_argv[1][1])
found = 1; found = 1;
if (found) break; if (found) break;
} }
if (! found) { if (!found)
{
bad[strlen(bad) + 1] = '\0'; bad[strlen(bad) + 1] = '\0';
bad[strlen(bad)] = P_argv[1][1]; bad[strlen(bad)] = P_argv[1][1];
} else { }
else
{
tab[i].used = pos++; tab[i].used = pos++;
switch (toupper(tab[i].kind)) { switch (toupper(tab[i].kind))
{
case 'B': case 'B':
break; break;
case 'I': case 'I':
...@@ -193,10 +220,13 @@ char *bad; ...@@ -193,10 +220,13 @@ char *bad;
tab[i].UU.s = P_argv[1]+2; tab[i].UU.s = P_argv[1]+2;
break; break;
case 'M': case 'M':
if (P_argc > 2 && !P_argv[1][2]) { if (P_argc > 2 && !P_argv[1][2])
{
tab[i].UU.s = P_argv[2]; tab[i].UU.s = P_argv[2];
newci_eatargument(); newci_eatargument();
} else { }
else
{
tab[i].UU.s = P_argv[1] + 2; tab[i].UU.s = P_argv[1] + 2;
} }
break; break;
...@@ -206,19 +236,16 @@ char *bad; ...@@ -206,19 +236,16 @@ char *bad;
} }
} }
long timers_sysclock() long timers_sysclock()
{ {
return sysclock(); return sysclock();
} }
long newci_fullseconds() long newci_fullseconds()
{ {
return(time(NULL)); return(time(NULL));
} }
void newci_nullrecover() void newci_nullrecover()
{ {
_Escape(P_escapecode); _Escape(P_escapecode);
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter