~ubuntu-branches/ubuntu/hoary/scilab/hoary

« back to all changes in this revision

Viewing changes to routines/libcomm/utilitaires.c

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2005-01-09 22:58:21 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050109225821-473xr8vhgugxxx5j
Tags: 3.0-12
changed configure.in to build scilab's own malloc.o, closes: #255869

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#ifdef sgi
2
 
#define __STDC__
3
 
#endif
4
 
 
5
 
#ifndef __STDC__
6
 
#include <varargs.h>
7
 
#define Va_start(a,b) va_start(a)
8
 
#else
9
 
#include <stdarg.h>
10
 
#define Va_start(a,b) va_start(a,b)
11
 
#endif
12
 
#include <stdio.h>
13
 
#include <string.h>
14
 
#include "gestion_memoire.h"
15
 
#include "buffer_dynamiques.h"
16
 
#include "utilitaires.h"
17
 
 
18
 
#define TAILLE_INIT_TABLEAU 10
19
 
 
20
 
void liberer_tableau_de_pointeurs(tableau,taille)
21
 
char **tableau;
22
 
int taille;
23
 
{
24
 
    int compteur;
25
 
    for(compteur=0 ; compteur < taille ; compteur ++)
26
 
        liberer(tableau[compteur]);
27
 
}
28
 
 
29
 
 
30
 
/*
31
 
    il faut que, comme avec strcat, la chaine ait la
32
 
    place pour accepter le caractere supplementaire.
33
 
*/
34
 
void concat_caractere(chaine,caractere)
35
 
char *chaine;
36
 
char caractere;
37
 
{
38
 
    chaine[strlen(chaine)+1]='\0';
39
 
    chaine[strlen(chaine)]=caractere;
40
 
}
41
 
 
42
 
/*
43
 
   il faut que, comme avec strcat, la chaine ait la place pour 
44
 
   accepter la chaine et le caractere supplementaires
45
 
*/
46
 
void strcat_plus_caractere(chaine_a_remplir,chaine_a_copier,caractere)
47
 
char *chaine_a_remplir;
48
 
char *chaine_a_copier;
49
 
char caractere;
50
 
{
51
 
    strcat(chaine_a_remplir,chaine_a_copier);
52
 
    concat_caractere(chaine_a_remplir,caractere);
53
 
}
54
 
 
55
 
/* 
56
 
 * stores the set of strings coded in first + liste 
57
 
 * in a dynamically allocated array 
58
 
 */
59
 
 
60
 
tableau_avec_taille convertir_nombre_arbitraire_de_chaines_en_tableau(first,liste)
61
 
     char *first;
62
 
     va_list *liste;
63
 
{
64
 
    tableau_avec_taille resultat;
65
 
    char *chaine;
66
 
 
67
 
    resultat.taille=0;
68
 
    resultat.tableau=gbd_creer_buffer_dynamique_type(char *,TAILLE_INIT_TABLEAU,allouer,reallouer,liberer,NULL);
69
 
    resultat.tableau=gbd_augmenter_buffer_dynamique(resultat.tableau,1);
70
 
 
71
 
    chaine = first;
72
 
    while( chaine  != NULL)
73
 
      {
74
 
        resultat.tableau[resultat.taille++]=dupliquer_chaine(chaine);
75
 
        resultat.tableau=gbd_augmenter_buffer_dynamique(resultat.tableau,1);
76
 
        chaine=va_arg(*liste,char *);
77
 
      }
78
 
    resultat.tableau[resultat.taille]=NULL;
79
 
 
80
 
    return resultat;
81
 
}
82
 
 
83
 
/* 
84
 
 * unused function ....
85
 
 * 
86
 
 */ 
87
 
 
88
 
#ifdef __STDC__
89
 
char *concatenation_plusieurs_chaines_unused (char * first, ...)
90
 
#else
91
 
char *concatenation_plusieurs_chaines_unused (va_alist) va_dcl
92
 
#endif
93
 
{
94
 
    va_list liste;
95
 
 
96
 
    char *chaine_resultat;
97
 
    tableau_avec_taille temporaire;
98
 
    int nb_caracteres;
99
 
    int compteur;
100
 
#ifdef __STDC__
101
 
    va_start(liste,first);
102
 
#else
103
 
    char *first;
104
 
    va_start(liste);
105
 
    first = va_arg(liste, char *);
106
 
#endif
107
 
 
108
 
    nb_caracteres=0;
109
 
 
110
 
    temporaire=convertir_nombre_arbitraire_de_chaines_en_tableau(first,&liste);
111
 
    for(compteur=0;compteur<temporaire.taille;compteur++)
112
 
        nb_caracteres+=strlen(temporaire.tableau[compteur]);
113
 
 
114
 
    chaine_resultat=allouer_type(char,nb_caracteres+1);
115
 
    *chaine_resultat='\0';
116
 
    for(compteur=0;compteur<temporaire.taille;compteur++)
117
 
        strcat(chaine_resultat,temporaire.tableau[compteur]);
118
 
 
119
 
    liberer_tableau_de_pointeurs(temporaire.tableau,temporaire.taille);
120
 
    gbd_liberer_mixte(temporaire.tableau);
121
 
 
122
 
    va_end(liste);
123
 
 
124
 
    return chaine_resultat;
125
 
}
126
 
 
127
 
 
128
 
char *concatener_deux_chaines(chaine1,chaine2)
129
 
char *chaine1;
130
 
char *chaine2;
131
 
{
132
 
    char *chaine_resultat;
133
 
    chaine_resultat=allouer_type(char,strlen(chaine1)+strlen(chaine2)+1);
134
 
    strcpy(chaine_resultat,chaine1);
135
 
    strcat(chaine_resultat,chaine2);
136
 
    return chaine_resultat;
137
 
}
138
 
 
139
 
 
140
 
char *dupliquer_chaine(chaine_source)
141
 
char *chaine_source;
142
 
{
143
 
    char *chaine_resultat=allouer_type(char,strlen(chaine_source)+1);
144
 
    strcpy(chaine_resultat,chaine_source);
145
 
 
146
 
    return chaine_resultat;
147
 
}