Annotation of rpl/src/interface_gnuplot.c, revision 1.8

1.1       bertrand    1: /*
                      2: ================================================================================
1.8     ! bertrand    3:   RPL/2 (R) version 4.0.14
1.1       bertrand    4:   Copyright (C) 1989-2010 Dr. BERTRAND Joël
                      5: 
                      6:   This file is part of RPL/2.
                      7: 
                      8:   RPL/2 is free software; you can redistribute it and/or modify it
                      9:   under the terms of the CeCILL V2 License as published by the french
                     10:   CEA, CNRS and INRIA.
                     11:  
                     12:   RPL/2 is distributed in the hope that it will be useful, but WITHOUT
                     13:   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
                     14:   FITNESS FOR A PARTICULAR PURPOSE.  See the CeCILL V2 License
                     15:   for more details.
                     16:  
                     17:   You should have received a copy of the CeCILL License
                     18:   along with RPL/2. If not, write to info@cecill.info.
                     19: ================================================================================
                     20: */
                     21: 
                     22: 
                     23: #include "rpl.conv.h"
                     24: #include "gnuplot.conv.h"
                     25: 
                     26: 
                     27: /*
                     28: ================================================================================
                     29:   Fonction 'appel_gnuplot'
                     30: ================================================================================
                     31:   Entrées : persistance  'E' écran, 'N' normal, 'I' impression, 'F' fichier
                     32: --------------------------------------------------------------------------------
                     33:   Sorties : néant
                     34: --------------------------------------------------------------------------------
                     35:   Effets de bord : néant
                     36: ================================================================================
                     37: */
                     38: 
                     39: void
                     40: appel_gnuplot(struct_processus *s_etat_processus, unsigned char persistance)
                     41: {
                     42:    file                        *entree_standard;
                     43:    file                        *fichier_destination;
                     44:    file                        *fichier_image;
                     45:    file                        *fichier_impression;
                     46:    file                        *fichier_source;
                     47: 
                     48:    int                         caractere;
                     49: 
                     50:    logical1                    adequation_fichier;
                     51: 
                     52:    long                        compteur_nombre_fichiers;
                     53: 
                     54:    real8                       phi;
                     55:    real8                       theta;
                     56: 
                     57:    struct_fichier_graphique    *l_ancienne_base_liste;
                     58:    struct_fichier_graphique    *l_base_liste;
                     59:    struct_fichier_graphique    *l_fichier_courant;
                     60: 
                     61:    struct_marque               *l_marque;
                     62: 
                     63:    unsigned char               *nom_fichier;
                     64:    unsigned char               *commande_gnuplot;
                     65: 
                     66: #  ifndef GNUPLOT_SUPPORT
                     67:        if ((*s_etat_processus).langue == 'F')
                     68:        {
                     69:            printf("+++Attention : Support de GnuPlot non compilé !\n");
                     70:        }
                     71:        else
                     72:        {
                     73:            printf("+++Warning : GnuPlot not available !\n");
                     74:        }
                     75: 
                     76:        fflush(stdout);
                     77: 
                     78:        return;
                     79: #  endif
                     80:    
                     81:    /*
                     82:     * Comptage du nombre des fichiers et superposition le cas échéant
                     83:     */
                     84: 
                     85:    l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                     86:    compteur_nombre_fichiers = 0;
                     87:    nom_fichier = NULL;
                     88: 
                     89:    while(l_fichier_courant != NULL)
                     90:    {
                     91:        compteur_nombre_fichiers++;
                     92:        l_fichier_courant = (*l_fichier_courant).suivant;
                     93:    }
                     94: 
                     95:    if (compteur_nombre_fichiers > ds_gnuplot_nombre_max_fichiers)
                     96:    {
                     97:        if ((*s_etat_processus).langue == 'F')
                     98:        {
                     99:            printf("+++Attention : Réduction du nombre de plans\n");
                    100:        }
                    101:        else
                    102:        {
                    103:            printf("+++Warning : Graphical depth reduction\n");
                    104:        }
                    105: 
                    106:        l_base_liste = (*s_etat_processus).fichiers_graphiques;
                    107:        (*s_etat_processus).fichiers_graphiques = NULL;
                    108: 
                    109:        while(l_base_liste != NULL)
                    110:        {
                    111:            l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                    112:            adequation_fichier = d_faux;
                    113: 
                    114:            while(l_fichier_courant != NULL)
                    115:            {
                    116:                if ((strcmp((*l_fichier_courant).type, (*l_base_liste).type)
                    117:                        == 0) && ((*l_fichier_courant).systeme_axes ==
                    118:                        (*l_base_liste).systeme_axes))
                    119:                {
                    120:                    adequation_fichier = d_vrai;
                    121:                    break;
                    122:                }
                    123: 
                    124:                l_fichier_courant = (*l_fichier_courant).suivant;
                    125:            }
                    126: 
                    127:            if (adequation_fichier == d_vrai)
                    128:            {
                    129:                if ((fichier_source = fopen((*l_base_liste).nom, "r"))
                    130:                        == NULL)
                    131:                {
                    132:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    133:                    return;
                    134:                }
                    135: 
                    136:                if ((fichier_destination = fopen((*l_fichier_courant).nom,
                    137:                        "a")) == NULL)
                    138:                {
                    139:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    140:                    return;
                    141:                }
                    142: 
                    143:                if (fprintf(fichier_destination, "\n") < 0)
                    144:                {
                    145:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    146:                    return;
                    147:                }
                    148: 
                    149:                while((caractere = getc(fichier_source)) != EOF)
                    150:                {
                    151:                    if (putc(caractere, fichier_destination) == EOF)
                    152:                    {
                    153:                        (*s_etat_processus).erreur_systeme =
                    154:                                d_es_erreur_fichier;
                    155:                        return;
                    156:                    }
                    157:                }
                    158: 
                    159:                if (fclose(fichier_source) != 0)
                    160:                {
                    161:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    162:                    return;
                    163:                }
                    164:                
                    165:                if (fclose(fichier_destination) != 0)
                    166:                {
                    167:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    168:                    return;
                    169:                }
                    170: 
                    171:                if (((*l_fichier_courant).presence_axes == d_vrai) ||
                    172:                        ((*l_base_liste).presence_axes == d_vrai))
                    173:                {
                    174:                    (*l_fichier_courant).presence_axes = d_vrai;
                    175:                }
                    176:                else
                    177:                {
                    178:                    (*l_fichier_courant).presence_axes = d_faux;
                    179:                }
                    180: 
                    181:                if (destruction_fichier((*l_base_liste).nom) == d_erreur)
                    182:                {
                    183:                    (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    184:                    return;
                    185:                }
                    186: 
                    187:                free((*l_base_liste).nom);
                    188: 
                    189:                if ((*l_base_liste).legende != NULL)
                    190:                {
                    191:                    free((*l_base_liste).legende);
                    192:                }
                    193:            }
                    194:            else
                    195:            {
                    196:                l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                    197: 
                    198:                if (l_fichier_courant == NULL)
                    199:                {
                    200:                    if (((*s_etat_processus).fichiers_graphiques =
                    201:                            (struct_fichier_graphique *) malloc(
                    202:                            sizeof(struct_fichier_graphique))) == NULL)
                    203:                    {
                    204:                        (*s_etat_processus).erreur_systeme =
                    205:                                d_es_allocation_memoire;
                    206:                        return;
                    207:                    }
                    208: 
                    209:                    (*(*s_etat_processus).fichiers_graphiques).suivant = NULL;
                    210:                    (*(*s_etat_processus).fichiers_graphiques).nom =
                    211:                            (*l_base_liste).nom;
                    212:                    (*(*s_etat_processus).fichiers_graphiques).legende = NULL;
                    213:                    (*(*s_etat_processus).fichiers_graphiques).presence_axes =
                    214:                            (*l_base_liste).presence_axes;
                    215:                    strcpy((*(*s_etat_processus).fichiers_graphiques).type,
                    216:                            (*l_base_liste).type);
                    217:                    (*(*s_etat_processus).fichiers_graphiques).dimensions =
                    218:                            (*l_base_liste).dimensions;
1.4       bertrand  219:                    (*(*s_etat_processus).fichiers_graphiques).systeme_axes =
                    220:                            (*l_base_liste).systeme_axes;
1.1       bertrand  221:                }
                    222:                else
                    223:                {
                    224:                    while((*l_fichier_courant).suivant != NULL)
                    225:                    {
                    226:                        l_fichier_courant = (*l_fichier_courant).suivant;
                    227:                    }
                    228: 
                    229:                    if (((*l_fichier_courant).suivant =
                    230:                            (struct_fichier_graphique *) malloc(
                    231:                            sizeof(struct_fichier_graphique))) == NULL)
                    232:                    {
                    233:                        (*s_etat_processus).erreur_systeme =
                    234:                                d_es_allocation_memoire;
                    235:                        return;
                    236:                    }
                    237: 
                    238:                    l_fichier_courant = (*l_fichier_courant).suivant;
                    239: 
                    240:                    (*l_fichier_courant).suivant = NULL;
                    241:                    (*l_fichier_courant).nom = (*l_base_liste).nom;
                    242:                    (*l_fichier_courant).legende = NULL;
                    243:                    (*l_fichier_courant).presence_axes = d_faux;
                    244:                    strcpy((*l_fichier_courant).type, (*l_base_liste).type);
1.4       bertrand  245:                    (*l_fichier_courant).dimensions =
1.1       bertrand  246:                            (*l_base_liste).dimensions;
1.4       bertrand  247:                    (*l_fichier_courant).systeme_axes =
                    248:                            (*l_base_liste).systeme_axes;
1.1       bertrand  249:                }
                    250:            }
                    251: 
                    252:            l_ancienne_base_liste = l_base_liste;
                    253:            l_base_liste = (*l_base_liste).suivant;
                    254:            free(l_ancienne_base_liste);
                    255:        }
                    256:    }
                    257: 
                    258:    /*
                    259:     * Traitement du cas où l'afficheur n'est pas persistant
                    260:     */
                    261: 
                    262:    if (persistance == 'N')
                    263:    {
                    264:        entree_standard = NULL;
                    265: 
                    266:        if ((*s_etat_processus).entree_standard == NULL)
                    267:        {
                    268: #ifdef FORCE_GNUPLOT_PATH
1.6       bertrand  269:            if ((*s_etat_processus).rpl_home == NULL)
1.1       bertrand  270:            {
1.6       bertrand  271:                if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
                    272:                        strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    273:                        == NULL)
                    274:                {
                    275:                    (*s_etat_processus).erreur_systeme =
                    276:                            d_es_allocation_memoire;
                    277:                    return;
                    278:                }
                    279: 
                    280:                sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
                    281:                        ds_gnuplot_commande);
1.1       bertrand  282:            }
1.6       bertrand  283:            else
                    284:            {
                    285:                if ((commande_gnuplot = malloc((strlen(
                    286:                        (*s_etat_processus).rpl_home) + 6 +
                    287:                        strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    288:                        == NULL)
                    289:                {
                    290:                    (*s_etat_processus).erreur_systeme =
                    291:                            d_es_allocation_memoire;
                    292:                    return;
                    293:                }
1.1       bertrand  294: 
1.6       bertrand  295:                sprintf(commande_gnuplot, "%s/bin/%s",
                    296:                        (*s_etat_processus).rpl_home, ds_gnuplot_commande);
                    297:            }
1.1       bertrand  298: #else
                    299:            if ((commande_gnuplot = malloc((1 +
                    300:                    strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    301:                    == NULL)
                    302:            {
                    303:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    304:                return;
                    305:            }
                    306: 
                    307:            sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
                    308: #endif
                    309: 
                    310:            if (((*s_etat_processus).entree_standard =
                    311:                    popen(commande_gnuplot, "w")) == NULL)
                    312:            {
                    313:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    314:                return;
                    315:            }
                    316: 
                    317:            free(commande_gnuplot);
                    318: 
                    319:            if (fprintf((*s_etat_processus).entree_standard,
                    320:                    "%s\n", ds_gnuplot_terminal_defaut) < 0)
                    321:            {
                    322:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    323:                return;
                    324:            }
                    325:        }
                    326: 
                    327:        if (strlen((*s_etat_processus).titre) > 0)
                    328:        {
                    329:            if (fprintf((*s_etat_processus).entree_standard,
                    330:                    "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
                    331:            {
                    332:                (*s_etat_processus).erreur_systeme = d_es_processus;
                    333:                return;
                    334:            }
                    335:        }
                    336:    }
                    337:    else if (persistance == 'E') /* Ecran */
                    338:    {
                    339:        entree_standard = (*s_etat_processus).entree_standard;
                    340: 
                    341: #if FORCE_GNUPLOT_PATH
1.6       bertrand  342:        if ((*s_etat_processus).rpl_home == NULL)
1.1       bertrand  343:        {
1.6       bertrand  344:            if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
                    345:                    strlen(ds_gnuplot_commande_persistante)) *
                    346:                    sizeof(unsigned char))) == NULL)
                    347:            {
                    348:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    349:                return;
                    350:            }
                    351: 
                    352:            sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
                    353:                    ds_gnuplot_commande_persistante);
1.1       bertrand  354:        }
1.6       bertrand  355:        else
                    356:        {
                    357:            if ((commande_gnuplot = malloc((strlen(
                    358:                    (*s_etat_processus).rpl_home) + 6 +
                    359:                    strlen(ds_gnuplot_commande_persistante)) *
                    360:                    sizeof(unsigned char))) == NULL)
                    361:            {
                    362:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    363:                return;
                    364:            }
1.1       bertrand  365: 
1.6       bertrand  366:            sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
                    367:                    ds_gnuplot_commande_persistante);
                    368:        }
1.1       bertrand  369: #else
                    370:        if ((commande_gnuplot = malloc((1 +
                    371:                strlen(ds_gnuplot_commande_persistante)) *
                    372:                sizeof(unsigned char))) == NULL)
                    373:        {
                    374:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    375:            return;
                    376:        }
                    377: 
                    378:        sprintf(commande_gnuplot, "%s", ds_gnuplot_commande_persistante);
                    379: #endif
                    380: 
                    381:        if (((*s_etat_processus).entree_standard =
                    382:                popen(commande_gnuplot, "w")) == NULL)
                    383:        {
                    384:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    385:            return;
                    386:        }
                    387: 
                    388:        free(commande_gnuplot);
                    389: 
                    390:        if (fprintf((*s_etat_processus).entree_standard,
                    391:                "%s\n", ds_gnuplot_terminal_defaut) < 0)
                    392:        {
                    393:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    394:            return;
                    395:        }
                    396: 
                    397:        if (strlen((*s_etat_processus).titre) > 0)
                    398:        {
                    399:            if (fprintf((*s_etat_processus).entree_standard,
                    400:                    "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
                    401:            {
                    402:                (*s_etat_processus).erreur_systeme = d_es_processus;
                    403:                return;
                    404:            }
                    405:        }
                    406:    }
                    407:    else if (persistance == 'I') /* Imprimante */
                    408:    {
                    409:        entree_standard = (*s_etat_processus).entree_standard;
                    410: 
                    411: #ifdef FORCE_GNUPLOT_PATH
1.6       bertrand  412:        if ((*s_etat_processus).rpl_home == NULL)
1.1       bertrand  413:        {
1.6       bertrand  414:            if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
                    415:                    strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    416:                    == NULL)
                    417:            {
                    418:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    419:                return;
                    420:            }
                    421: 
                    422:            sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
                    423:                    ds_gnuplot_commande);
1.1       bertrand  424:        }
1.6       bertrand  425:        else
                    426:        {
                    427:            if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
                    428:                    + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    429:                    == NULL)
                    430:            {
                    431:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    432:                return;
                    433:            }
1.1       bertrand  434: 
1.6       bertrand  435:            sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
                    436:                    ds_gnuplot_commande);
                    437:        }
1.1       bertrand  438: #else
                    439:        if ((commande_gnuplot = malloc((1 +
                    440:                strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    441:                == NULL)
                    442:        {
                    443:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    444:            return;
                    445:        }
                    446: 
                    447:        sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
                    448: #endif
                    449: 
                    450:        if (((*s_etat_processus).entree_standard =
                    451:                popen(commande_gnuplot, "w")) == NULL)
                    452:        {
                    453:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    454:            return;
                    455:        }
                    456: 
                    457:        free(commande_gnuplot);
                    458: 
                    459:        if (fprintf((*s_etat_processus).entree_standard,
                    460:                "%s\n", ds_gnuplot_terminal_defaut) < 0)
                    461:        {
                    462:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    463:            return;
                    464:        }
                    465: 
                    466:        if ((nom_fichier = creation_nom_fichier(s_etat_processus,
                    467:                (*s_etat_processus).chemin_fichiers_temporaires)) == NULL)
                    468:        {
                    469:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                    470:            return;
                    471:        }
                    472: 
                    473:        if (fprintf((*s_etat_processus).entree_standard,
                    474:                "set terminal latex\n") < 0)
                    475:        {
                    476:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    477:            return;
                    478:        }
                    479: 
                    480:        if (fprintf((*s_etat_processus).entree_standard, "set output \"%s\"\n",
                    481:                nom_fichier) < 0)
                    482:        {
                    483:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    484:            return;
                    485:        }
                    486:    }
                    487:    else /* persistance == 'F' comme fichier */
                    488:    {
                    489:        entree_standard = (*s_etat_processus).entree_standard;
                    490: 
                    491: #ifdef FORCE_GNUPLOT_PATH
1.6       bertrand  492:        if ((*s_etat_processus).rpl_home == NULL)
1.1       bertrand  493:        {
1.6       bertrand  494:            if ((commande_gnuplot = malloc((strlen(d_exec_path) + 6 +
                    495:                    strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    496:                    == NULL)
                    497:            {
                    498:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    499:                return;
                    500:            }
                    501: 
                    502:            sprintf(commande_gnuplot, "%s/bin/%s", d_exec_path,
                    503:                    ds_gnuplot_commande);
1.1       bertrand  504:        }
1.6       bertrand  505:        else
                    506:        {
                    507:            if ((commande_gnuplot = malloc((strlen((*s_etat_processus).rpl_home)
                    508:                    + 6 + strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    509:                    == NULL)
                    510:            {
                    511:                (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    512:                return;
                    513:            }
1.1       bertrand  514: 
1.6       bertrand  515:            sprintf(commande_gnuplot, "%s/bin/%s", (*s_etat_processus).rpl_home,
                    516:                    ds_gnuplot_commande);
                    517:        }
1.1       bertrand  518: #else
                    519:        if ((commande_gnuplot = malloc((1 +
                    520:                strlen(ds_gnuplot_commande)) * sizeof(unsigned char)))
                    521:                == NULL)
                    522:        {
                    523:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    524:            return;
                    525:        }
                    526: 
                    527:        sprintf(commande_gnuplot, "%s", ds_gnuplot_commande);
                    528: #endif
                    529: 
                    530:        if (((*s_etat_processus).entree_standard =
                    531:                popen(commande_gnuplot, "w")) == NULL)
                    532:        {
                    533:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    534:            return;
                    535:        }
                    536: 
                    537:        free(commande_gnuplot);
                    538: 
                    539:        if (fprintf((*s_etat_processus).entree_standard, "set terminal %s\n",
                    540:                (*s_etat_processus).type_fichier_gnuplot) < 0)
                    541:        {
                    542:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    543:            return;
                    544:        }
                    545: 
                    546:        if (fprintf((*s_etat_processus).entree_standard, "set output \"%s\"\n",
                    547:                (*s_etat_processus).nom_fichier_gnuplot) < 0)
                    548:        {
                    549:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    550:            return;
                    551:        }
                    552: 
                    553:        free((*s_etat_processus).nom_fichier_gnuplot);
                    554:        free((*s_etat_processus).type_fichier_gnuplot);
                    555: 
                    556:        (*s_etat_processus).nom_fichier_gnuplot = NULL;
                    557:        (*s_etat_processus).type_fichier_gnuplot = NULL;
                    558: 
                    559:        if (strlen((*s_etat_processus).titre) > 0)
                    560:        {
                    561:            if (fprintf((*s_etat_processus).entree_standard,
                    562:                    "set title \"%s\"\n", (*s_etat_processus).titre) < 0)
                    563:            {
                    564:                (*s_etat_processus).erreur_systeme = d_es_processus;
                    565:                return;
                    566:            }
                    567:        }
                    568:    }
                    569: 
                    570:    /*
                    571:     * Affichace des marques
                    572:     */
                    573: 
                    574:    l_marque = (*s_etat_processus).s_marques;
                    575: 
                    576:    while(l_marque != NULL)
                    577:    {
                    578:        if (fprintf((*s_etat_processus).entree_standard,
                    579:                "set label \"%s\" at %s point front offset 0.2,0.2\n",
                    580:                (*l_marque).label, (*l_marque).position) < 0)
                    581:        {
                    582:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    583:            return;
                    584:        }
                    585: 
                    586:        l_marque = (*l_marque).suivant;
                    587:    }
                    588: 
                    589:    /*
                    590:     * Affichage, le cas échéant, des graduations
                    591:     */
                    592: 
                    593:    if ((*s_etat_processus).x_tics < 0)
                    594:    {
                    595:        if (fprintf((*s_etat_processus).entree_standard, "unset xtics\n") < 0)
                    596:        {
                    597:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    598:            return;
                    599:        }
                    600:    }
                    601:    else if ((*s_etat_processus).x_tics == 0)
                    602:    {
                    603:        if (fprintf((*s_etat_processus).entree_standard,
                    604:                "set xtics autofreq\n") < 0)
                    605:        {
                    606:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    607:            return;
                    608:        }
                    609:    }
                    610:    else
                    611:    {
                    612:        if (fprintf((*s_etat_processus).entree_standard, "set xtics %f\n",
                    613:                (*s_etat_processus).x_tics) < 0)
                    614:        {
                    615:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    616:            return;
                    617:        }
                    618:    }
                    619: 
                    620:    if ((*s_etat_processus).mx_tics < 0)
                    621:    {
                    622:        if (fprintf((*s_etat_processus).entree_standard, "unset mxtics\n") < 0)
                    623:        {
                    624:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    625:            return;
                    626:        }
                    627:    }
                    628:    else if ((*s_etat_processus).mx_tics == 0)
                    629:    {
                    630:        if (fprintf((*s_etat_processus).entree_standard,
                    631:                "set mxtics default\n") < 0)
                    632:        {
                    633:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    634:            return;
                    635:        }
                    636:    }
                    637:    else
                    638:    {
                    639:        if (fprintf((*s_etat_processus).entree_standard, "set mxtics %lld\n",
                    640:                (*s_etat_processus).mx_tics) < 0)
                    641:        {
                    642:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    643:            return;
                    644:        }
                    645:    }
                    646: 
                    647:    if ((*s_etat_processus).y_tics < 0)
                    648:    {
                    649:        if (fprintf((*s_etat_processus).entree_standard, "unset ytics\n") < 0)
                    650:        {
                    651:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    652:            return;
                    653:        }
                    654:    }
                    655:    else if ((*s_etat_processus).y_tics == 0)
                    656:    {
                    657:        if (fprintf((*s_etat_processus).entree_standard,
                    658:                "set ytics autofreq\n") < 0)
                    659:        {
                    660:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    661:            return;
                    662:        }
                    663:    }
                    664:    else
                    665:    {
                    666:        if (fprintf((*s_etat_processus).entree_standard, "set ytics %f\n",
                    667:                (*s_etat_processus).y_tics) < 0)
                    668:        {
                    669:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    670:            return;
                    671:        }
                    672:    }
                    673: 
                    674:    if ((*s_etat_processus).my_tics < 0)
                    675:    {
                    676:        if (fprintf((*s_etat_processus).entree_standard, "unset mytics\n") < 0)
                    677:        {
                    678:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    679:            return;
                    680:        }
                    681:    }
                    682:    else if ((*s_etat_processus).my_tics == 0)
                    683:    {
                    684:        if (fprintf((*s_etat_processus).entree_standard,
                    685:                "set mytics default\n") < 0)
                    686:        {
                    687:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    688:            return;
                    689:        }
                    690:    }
                    691:    else
                    692:    {
                    693:        if (fprintf((*s_etat_processus).entree_standard, "set mytics %lld\n",
                    694:                (*s_etat_processus).my_tics) < 0)
                    695:        {
                    696:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    697:            return;
                    698:        }
                    699:    }
                    700: 
                    701:    if ((*s_etat_processus).z_tics < 0)
                    702:    {
                    703:        if (fprintf((*s_etat_processus).entree_standard, "unset ztics\n") < 0)
                    704:        {
                    705:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    706:            return;
                    707:        }
                    708:    }
                    709:    else if ((*s_etat_processus).z_tics == 0)
                    710:    {
                    711:        if (fprintf((*s_etat_processus).entree_standard,
                    712:                "set ztics autofreq\n") < 0)
                    713:        {
                    714:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    715:            return;
                    716:        }
                    717:    }
                    718:    else
                    719:    {
                    720:        if (fprintf((*s_etat_processus).entree_standard, "set ztics %f\n",
                    721:                (*s_etat_processus).z_tics) < 0)
                    722:        {
                    723:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    724:            return;
                    725:        }
                    726:    }
                    727: 
                    728:    if ((*s_etat_processus).mz_tics < 0)
                    729:    {
                    730:        if (fprintf((*s_etat_processus).entree_standard, "unset mztics\n") < 0)
                    731:        {
                    732:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    733:            return;
                    734:        }
                    735:    }
                    736:    else if ((*s_etat_processus).mz_tics == 0)
                    737:    {
                    738:        if (fprintf((*s_etat_processus).entree_standard,
                    739:                "set mztics default\n") < 0)
                    740:        {
                    741:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    742:            return;
                    743:        }
                    744:    }
                    745:    else
                    746:    {
                    747:        if (fprintf((*s_etat_processus).entree_standard, "set mztics %lld\n",
                    748:                (*s_etat_processus).mz_tics) < 0)
                    749:        {
                    750:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    751:            return;
                    752:        }
                    753:    }
                    754: 
                    755:    if ((*s_etat_processus).x2_tics < 0)
                    756:    {
                    757:        if (fprintf((*s_etat_processus).entree_standard, "unset x2tics\n") < 0)
                    758:        {
                    759:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    760:            return;
                    761:        }
                    762:    }
                    763:    else if ((*s_etat_processus).x2_tics == 0)
                    764:    {
                    765:        if (fprintf((*s_etat_processus).entree_standard,
                    766:                "set x2tics autofreq\n") < 0)
                    767:        {
                    768:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    769:            return;
                    770:        }
                    771:    }
                    772:    else
                    773:    {
                    774:        if (fprintf((*s_etat_processus).entree_standard, "set x2tics %f\n",
                    775:                (*s_etat_processus).x2_tics) < 0)
                    776:        {
                    777:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    778:            return;
                    779:        }
                    780:    }
                    781: 
                    782:    if ((*s_etat_processus).mx2_tics < 0)
                    783:    {
                    784:        if (fprintf((*s_etat_processus).entree_standard, "unset mx2tics\n") < 0)
                    785:        {
                    786:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    787:            return;
                    788:        }
                    789:    }
                    790:    else if ((*s_etat_processus).mx2_tics == 0)
                    791:    {
                    792:        if (fprintf((*s_etat_processus).entree_standard,
                    793:                "set mx2tics default\n") < 0)
                    794:        {
                    795:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    796:            return;
                    797:        }
                    798:    }
                    799:    else
                    800:    {
                    801:        if (fprintf((*s_etat_processus).entree_standard, "set mx2tics %lld\n",
                    802:                (*s_etat_processus).mx2_tics) < 0)
                    803:        {
                    804:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    805:            return;
                    806:        }
                    807:    }
                    808: 
                    809:    if ((*s_etat_processus).y2_tics < 0)
                    810:    {
                    811:        if (fprintf((*s_etat_processus).entree_standard, "unset y2tics\n") < 0)
                    812:        {
                    813:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    814:            return;
                    815:        }
                    816:    }
                    817:    else if ((*s_etat_processus).y2_tics == 0)
                    818:    {
                    819:        if (fprintf((*s_etat_processus).entree_standard,
                    820:                "set y2tics autofreq\n") < 0)
                    821:        {
                    822:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    823:            return;
                    824:        }
                    825:    }
                    826:    else
                    827:    {
                    828:        if (fprintf((*s_etat_processus).entree_standard, "set y2tics %f\n",
                    829:                (*s_etat_processus).y2_tics) < 0)
                    830:        {
                    831:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    832:            return;
                    833:        }
                    834:    }
                    835: 
                    836:    if ((*s_etat_processus).my2_tics < 0)
                    837:    {
                    838:        if (fprintf((*s_etat_processus).entree_standard, "unset my2tics\n") < 0)
                    839:        {
                    840:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    841:            return;
                    842:        }
                    843:    }
                    844:    else if ((*s_etat_processus).my2_tics == 0)
                    845:    {
                    846:        if (fprintf((*s_etat_processus).entree_standard,
                    847:                "set my2tics default\n") < 0)
                    848:        {
                    849:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    850:            return;
                    851:        }
                    852:    }
                    853:    else
                    854:    {
                    855:        if (fprintf((*s_etat_processus).entree_standard, "set my2tics %lld\n",
                    856:                (*s_etat_processus).my2_tics) < 0)
                    857:        {
                    858:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    859:            return;
                    860:        }
                    861:    }
                    862: 
                    863:    if ((*s_etat_processus).z2_tics < 0)
                    864:    {
                    865:        if (fprintf((*s_etat_processus).entree_standard, "unset z2tics\n") < 0)
                    866:        {
                    867:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    868:            return;
                    869:        }
                    870:    }
                    871:    else if ((*s_etat_processus).z2_tics == 0)
                    872:    {
                    873:        if (fprintf((*s_etat_processus).entree_standard,
                    874:                "set z2tics autofreq\n") < 0)
                    875:        {
                    876:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    877:            return;
                    878:        }
                    879:    }
                    880:    else
                    881:    {
                    882:        if (fprintf((*s_etat_processus).entree_standard, "set z2tics %f\n",
                    883:                (*s_etat_processus).z2_tics) < 0)
                    884:        {
                    885:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    886:            return;
                    887:        }
                    888:    }
                    889: 
                    890:    if ((*s_etat_processus).mz2_tics < 0)
                    891:    {
                    892:        if (fprintf((*s_etat_processus).entree_standard, "unset mz2tics\n") < 0)
                    893:        {
                    894:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    895:            return;
                    896:        }
                    897:    }
                    898:    else if ((*s_etat_processus).mz2_tics == 0)
                    899:    {
                    900:        if (fprintf((*s_etat_processus).entree_standard,
                    901:                "set mz2tics default\n") < 0)
                    902:        {
                    903:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    904:            return;
                    905:        }
                    906:    }
                    907:    else
                    908:    {
                    909:        if (fprintf((*s_etat_processus).entree_standard, "set mz2tics %lld\n",
                    910:                (*s_etat_processus).mz2_tics) < 0)
                    911:        {
                    912:            (*s_etat_processus).erreur_systeme = d_es_processus;
                    913:            return;
                    914:        }
                    915:    }
                    916: 
                    917:    l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                    918: 
                    919:    while(l_fichier_courant != NULL)
                    920:    {
                    921:        if ((*l_fichier_courant).presence_axes == d_vrai)
                    922:        {
                    923:            if ((*s_etat_processus).x_lines == d_vrai)
                    924:            {
                    925:                if (fprintf((*s_etat_processus).entree_standard,
                    926:                        "set grid xtics\n") < 0)
                    927:                {
                    928:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    929:                    return;
                    930:                }
                    931:            }
                    932: 
                    933:            if ((*s_etat_processus).y_lines == d_vrai)
                    934:            {
                    935:                if (fprintf((*s_etat_processus).entree_standard,
                    936:                        "set grid ytics\n") < 0)
                    937:                {
                    938:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    939:                    return;
                    940:                }
                    941:            }
                    942: 
                    943:            if ((*s_etat_processus).z_lines == d_vrai)
                    944:            {
                    945:                if (fprintf((*s_etat_processus).entree_standard,
                    946:                        "set grid ztics\n") < 0)
                    947:                {
                    948:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    949:                    return;
                    950:                }
                    951:            }
                    952: 
                    953:            if ((*s_etat_processus).x2_lines == d_vrai)
                    954:            {
                    955:                if (fprintf((*s_etat_processus).entree_standard,
                    956:                        "set grid x2tics\n") < 0)
                    957:                {
                    958:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    959:                    return;
                    960:                }
                    961:            }
                    962: 
                    963:            if ((*s_etat_processus).y2_lines == d_vrai)
                    964:            {
                    965:                if (fprintf((*s_etat_processus).entree_standard,
                    966:                        "set grid y2tics\n") < 0)
                    967:                {
                    968:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    969:                    return;
                    970:                }
                    971:            }
                    972: 
                    973:            if ((*s_etat_processus).z2_lines == d_vrai)
                    974:            {
                    975:                if (fprintf((*s_etat_processus).entree_standard,
                    976:                        "set grid z2tics\n") < 0)
                    977:                {
                    978:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    979:                    return;
                    980:                }
                    981:            }
                    982: 
                    983:            if ((*s_etat_processus).mx_lines == d_vrai)
                    984:            {
                    985:                if (fprintf((*s_etat_processus).entree_standard,
                    986:                        "set grid mxtics\n") < 0)
                    987:                {
                    988:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    989:                    return;
                    990:                }
                    991:            }
                    992: 
                    993:            if ((*s_etat_processus).my_lines == d_vrai)
                    994:            {
                    995:                if (fprintf((*s_etat_processus).entree_standard,
                    996:                        "set grid mytics\n") < 0)
                    997:                {
                    998:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                    999:                    return;
                   1000:                }
                   1001:            }
                   1002: 
                   1003:            if ((*s_etat_processus).mz_lines == d_vrai)
                   1004:            {
                   1005:                if (fprintf((*s_etat_processus).entree_standard,
                   1006:                        "set grid mztics\n") < 0)
                   1007:                {
                   1008:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1009:                    return;
                   1010:                }
                   1011:            }
                   1012: 
                   1013:            if ((*s_etat_processus).mx2_lines == d_vrai)
                   1014:            {
                   1015:                if (fprintf((*s_etat_processus).entree_standard,
                   1016:                        "set grid mx2tics\n") < 0)
                   1017:                {
                   1018:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1019:                    return;
                   1020:                }
                   1021:            }
                   1022: 
                   1023:            if ((*s_etat_processus).my2_lines == d_vrai)
                   1024:            {
                   1025:                if (fprintf((*s_etat_processus).entree_standard,
                   1026:                        "set grid my2tics\n") < 0)
                   1027:                {
                   1028:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1029:                    return;
                   1030:                }
                   1031:            }
                   1032: 
                   1033:            if ((*s_etat_processus).mz2_lines == d_vrai)
                   1034:            {
                   1035:                if (fprintf((*s_etat_processus).entree_standard,
                   1036:                        "set grid mz2tics\n") < 0)
                   1037:                {
                   1038:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1039:                    return;
                   1040:                }
                   1041:            }
                   1042: 
                   1043:            if ((strcmp((*l_fichier_courant).type, "FONCTION") == 0) ||
                   1044:                    (strcmp((*l_fichier_courant).type, "PARAMETRIQUE") == 0) ||
                   1045:                    (strcmp((*l_fichier_courant).type, "POINTS") == 0) ||
                   1046:                    (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0) ||
                   1047:                    (strcmp((*l_fichier_courant).type, "TABLE TRACANTE") == 0)
                   1048:                    || (strcmp((*l_fichier_courant).type, "COURBES DE NIVEAU")
                   1049:                    == 0) ||
                   1050:                    (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0))
                   1051:            {
                   1052:                if (fprintf((*s_etat_processus).entree_standard,
                   1053:                        "set grid\n") < 0)
                   1054:                {
                   1055:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1056:                    return;
                   1057:                }
                   1058:            }
                   1059:            else if (strcmp((*l_fichier_courant).type, "POLAIRE") == 0)
                   1060:            {
                   1061:                if (fprintf((*s_etat_processus).entree_standard,
                   1062:                        "set xtics axis nomirror\n") < 0)
                   1063:                {
                   1064:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1065:                    return;
                   1066:                }
                   1067: 
                   1068:                if (fprintf((*s_etat_processus).entree_standard,
                   1069:                        "set ytics axis nomirror\n") < 0)
                   1070:                {
                   1071:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1072:                    return;
                   1073:                }
                   1074: 
                   1075:                if (fprintf((*s_etat_processus).entree_standard,
                   1076:                        "set grid polar\n") < 0)
                   1077:                {
                   1078:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1079:                    return;
                   1080:                }
                   1081:                
                   1082:                if (fprintf((*s_etat_processus).entree_standard,
                   1083:                        "set size square\n") < 0)
                   1084:                {
                   1085:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1086:                    return;
                   1087:                }
                   1088: 
                   1089:                if (fprintf((*s_etat_processus).entree_standard,
                   1090:                        "unset x2tics\n") < 0)
                   1091:                {
                   1092:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1093:                    return;
                   1094:                }
                   1095: 
                   1096:                if (fprintf((*s_etat_processus).entree_standard,
                   1097:                        "unset y2tics\n") < 0)
                   1098:                {
                   1099:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1100:                    return;
                   1101:                }
                   1102: 
                   1103:                if (fprintf((*s_etat_processus).entree_standard,
                   1104:                        "unset z2tics\n") < 0)
                   1105:                {
                   1106:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1107:                    return;
                   1108:                }
                   1109: 
                   1110:                if (fprintf((*s_etat_processus).entree_standard,
                   1111:                        "unset mx2tics\n") < 0)
                   1112:                {
                   1113:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1114:                    return;
                   1115:                }
                   1116: 
                   1117:                if (fprintf((*s_etat_processus).entree_standard,
                   1118:                        "unset my2tics\n") < 0)
                   1119:                {
                   1120:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1121:                    return;
                   1122:                }
                   1123: 
                   1124:                if (fprintf((*s_etat_processus).entree_standard,
                   1125:                        "unset mz2tics\n") < 0)
                   1126:                {
                   1127:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1128:                    return;
                   1129:                }
                   1130:            }
                   1131:        }
                   1132: 
                   1133:        l_fichier_courant = (*l_fichier_courant).suivant;
                   1134:    }
                   1135: 
                   1136:    /*
                   1137:     * Gestion des noms des axes
                   1138:     */
                   1139: 
                   1140:    if (fprintf((*s_etat_processus).entree_standard,
                   1141:            "set xlabel \"%s\"\n", (*s_etat_processus).label_x) < 0)
                   1142:    {
                   1143:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1144:        return;
                   1145:    }
                   1146: 
                   1147:    if (fprintf((*s_etat_processus).entree_standard,
                   1148:            "set ylabel \"%s\"\n", (*s_etat_processus).label_y) < 0)
                   1149:    {
                   1150:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1151:        return;
                   1152:    }
                   1153: 
                   1154:    if (fprintf((*s_etat_processus).entree_standard,
                   1155:            "set zlabel \"%s\"\n", (*s_etat_processus).label_z) < 0)
                   1156:    {
                   1157:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1158:        return;
                   1159:    }
                   1160: 
                   1161: 
                   1162:    /*
                   1163:     * Gestion des échelles automatiques
                   1164:     */
                   1165: 
                   1166:    if ((*s_etat_processus).echelle_automatique_x == d_vrai)
                   1167:    {
                   1168:        if (fprintf((*s_etat_processus).entree_standard,
                   1169:                "set autoscale x\n") < 0)
                   1170:        {
                   1171:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1172:            return;
                   1173:        }
                   1174:    }
                   1175:    else
                   1176:    {
                   1177:        if (fprintf((*s_etat_processus).entree_standard,
                   1178:                "unset autoscale x\n") < 0)
                   1179:        {
                   1180:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1181:            return;
                   1182:        }
                   1183: 
                   1184:        if (fprintf((*s_etat_processus).entree_standard, "set xrange [%f:%f]\n",
                   1185:                (*s_etat_processus).x_min, (*s_etat_processus).x_max) < 0)
                   1186:        {
                   1187:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1188:            return;
                   1189:        }
                   1190:    }
                   1191: 
                   1192:    if ((*s_etat_processus).echelle_automatique_x2 == d_vrai)
                   1193:    {
                   1194:        if (fprintf((*s_etat_processus).entree_standard,
                   1195:                "set autoscale x2\n") < 0)
                   1196:        {
                   1197:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1198:            return;
                   1199:        }
                   1200:    }
                   1201:    else
                   1202:    {
                   1203:        if (fprintf((*s_etat_processus).entree_standard,
                   1204:                "unset autoscale x2\n") < 0)
                   1205:        {
                   1206:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1207:            return;
                   1208:        }
                   1209: 
                   1210:        if (fprintf((*s_etat_processus).entree_standard,
                   1211:                "set x2range [%f:%f]\n",
                   1212:                (*s_etat_processus).x2_min, (*s_etat_processus).x2_max) < 0)
                   1213:        {
                   1214:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1215:            return;
                   1216:        }
                   1217:    }
                   1218: 
                   1219:    if ((*s_etat_processus).echelle_automatique_y == d_vrai)
                   1220:    {
                   1221:        if (fprintf((*s_etat_processus).entree_standard,
                   1222:                "set autoscale y\n") < 0)
                   1223:        {
                   1224:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1225:            return;
                   1226:        }
                   1227:    }
                   1228:    else
                   1229:    {
                   1230:        if (fprintf((*s_etat_processus).entree_standard,
                   1231:                "unset autoscale y\n") < 0)
                   1232:        {
                   1233:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1234:            return;
                   1235:        }
                   1236: 
                   1237:        if (fprintf((*s_etat_processus).entree_standard, "set yrange [%f:%f]\n",
                   1238:                (*s_etat_processus).y_min, (*s_etat_processus).y_max) < 0)
                   1239:        {
                   1240:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1241:            return;
                   1242:        }
                   1243:    }
                   1244: 
                   1245:    if ((*s_etat_processus).echelle_automatique_y2 == d_vrai)
                   1246:    {
                   1247:        if (fprintf((*s_etat_processus).entree_standard,
                   1248:                "set autoscale y2\n") < 0)
                   1249:        {
                   1250:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1251:            return;
                   1252:        }
                   1253:    }
                   1254:    else
                   1255:    {
                   1256:        if (fprintf((*s_etat_processus).entree_standard,
                   1257:                "unset autoscale y2\n") < 0)
                   1258:        {
                   1259:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1260:            return;
                   1261:        }
                   1262: 
                   1263:        if (fprintf((*s_etat_processus).entree_standard,
                   1264:                "set y2range [%f:%f]\n",
                   1265:                (*s_etat_processus).y2_min, (*s_etat_processus).y2_max) < 0)
                   1266:        {
                   1267:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1268:            return;
                   1269:        }
                   1270:    }
                   1271: 
                   1272:    if ((*s_etat_processus).echelle_automatique_z == d_vrai)
                   1273:    {
                   1274:        if (fprintf((*s_etat_processus).entree_standard,
                   1275:                "set autoscale z\n") < 0)
                   1276:        {
                   1277:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1278:            return;
                   1279:        }
                   1280:    }
                   1281:    else
                   1282:    {
                   1283:        if (fprintf((*s_etat_processus).entree_standard,
                   1284:                "unset autoscale z\n") < 0)
                   1285:        {
                   1286:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1287:            return;
                   1288:        }
                   1289: 
                   1290:        if (fprintf((*s_etat_processus).entree_standard, "set zrange [%f:%f]\n",
                   1291:                (*s_etat_processus).z_min, (*s_etat_processus).z_max) < 0)
                   1292:        {
                   1293:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1294:            return;
                   1295:        }
                   1296:    }
                   1297: 
                   1298:    if ((*s_etat_processus).echelle_automatique_z2 == d_vrai)
                   1299:    {
                   1300:        if (fprintf((*s_etat_processus).entree_standard,
                   1301:                "set autoscale z2\n") < 0)
                   1302:        {
                   1303:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1304:            return;
                   1305:        }
                   1306:    }
                   1307:    else
                   1308:    {
                   1309:        if (fprintf((*s_etat_processus).entree_standard,
                   1310:                "unset autoscale z2\n") < 0)
                   1311:        {
                   1312:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1313:            return;
                   1314:        }
                   1315: 
                   1316:        if (fprintf((*s_etat_processus).entree_standard,
                   1317:                "set z2range [%f:%f]\n",
                   1318:                (*s_etat_processus).z_min, (*s_etat_processus).z_max) < 0)
                   1319:        {
                   1320:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1321:            return;
                   1322:        }
                   1323:    }
                   1324: 
                   1325:    /*
                   1326:     * Position du point de vue
                   1327:     */
                   1328: 
                   1329:    theta = (*s_etat_processus).point_de_vue_theta;
                   1330:    phi = (*s_etat_processus).point_de_vue_phi;
                   1331: 
                   1332:    conversion_radians_vers_degres(&theta);
                   1333:    conversion_radians_vers_degres(&phi);
                   1334: 
                   1335:    if (theta < 0)
                   1336:    {
                   1337:        theta = 0;
                   1338:    }
                   1339:    else if (theta > 360)
                   1340:    {
                   1341:        theta = 360;
                   1342:    }
                   1343: 
                   1344:    if (phi < 0)
                   1345:    {
                   1346:        phi = 0;
                   1347:    }
                   1348:    else if (phi > 180)
                   1349:    {
                   1350:        phi = 180;
                   1351:    }
                   1352: 
                   1353:    if (fprintf((*s_etat_processus).entree_standard,
                   1354:            "set view %f,%f,1,%f\n", phi, theta,
                   1355:            (*s_etat_processus).echelle_3D) < 0)
                   1356:    {
                   1357:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1358:        return;
                   1359:    }
                   1360: 
                   1361:    /*
                   1362:     * Gestion des échelles logarithmiques
                   1363:     */
                   1364: 
                   1365:    if ((*s_etat_processus).echelle_log_x == d_vrai)
                   1366:    {
                   1367:        if (fprintf((*s_etat_processus).entree_standard,
                   1368:                "set logscale x\n") < 0)
                   1369:        {
                   1370:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1371:            return;
                   1372:        }
                   1373:    }
                   1374:    else
                   1375:    {
                   1376:        if (fprintf((*s_etat_processus).entree_standard,
                   1377:                "unset logscale x\n") < 0)
                   1378:        {
                   1379:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1380:            return;
                   1381:        }
                   1382:    }
                   1383: 
                   1384:    if ((*s_etat_processus).echelle_log_y == d_vrai)
                   1385:    {
                   1386:        if (fprintf((*s_etat_processus).entree_standard,
                   1387:                "set logscale y\n") < 0)
                   1388:        {
                   1389:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1390:            return;
                   1391:        }
                   1392:    }
                   1393:    else
                   1394:    {
                   1395:        if (fprintf((*s_etat_processus).entree_standard,
                   1396:                "unset logscale y\n") < 0)
                   1397:        {
                   1398:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1399:            return;
                   1400:        }
                   1401:    }
                   1402: 
                   1403:    if ((*s_etat_processus).echelle_log_z == d_vrai)
                   1404:    {
                   1405:        if (fprintf((*s_etat_processus).entree_standard,
                   1406:                "set logscale z\n") < 0)
                   1407:        {
                   1408:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1409:            return;
                   1410:        }
                   1411:    }
                   1412:    else
                   1413:    {
                   1414:        if (fprintf((*s_etat_processus).entree_standard,
                   1415:                "unset logscale z\n") < 0)
                   1416:        {
                   1417:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1418:            return;
                   1419:        }
                   1420:    }
                   1421: 
                   1422:    if ((*s_etat_processus).echelle_log_x2 == d_vrai)
                   1423:    {
                   1424:        if (fprintf((*s_etat_processus).entree_standard,
                   1425:                "set logscale x2\n") < 0)
                   1426:        {
                   1427:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1428:            return;
                   1429:        }
                   1430:    }
                   1431:    else
                   1432:    {
                   1433:        if (fprintf((*s_etat_processus).entree_standard,
                   1434:                "unset logscale x2\n") < 0)
                   1435:        {
                   1436:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1437:            return;
                   1438:        }
                   1439:    }
                   1440: 
                   1441:    if ((*s_etat_processus).echelle_log_y2 == d_vrai)
                   1442:    {
                   1443:        if (fprintf((*s_etat_processus).entree_standard,
                   1444:                "set logscale y2\n") < 0)
                   1445:        {
                   1446:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1447:            return;
                   1448:        }
                   1449:    }
                   1450:    else
                   1451:    {
                   1452:        if (fprintf((*s_etat_processus).entree_standard,
                   1453:                "unset logscale y2\n") < 0)
                   1454:        {
                   1455:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1456:            return;
                   1457:        }
                   1458:    }
                   1459: 
                   1460:    if ((*s_etat_processus).echelle_log_z2 == d_vrai)
                   1461:    {
                   1462:        if (fprintf((*s_etat_processus).entree_standard,
                   1463:                "set logscale z2\n") < 0)
                   1464:        {
                   1465:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1466:            return;
                   1467:        }
                   1468:    }
                   1469:    else
                   1470:    {
                   1471:        if (fprintf((*s_etat_processus).entree_standard,
                   1472:                "unset logscale z2\n") < 0)
                   1473:        {
                   1474:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1475:            return;
                   1476:        }
                   1477:    }
                   1478: 
                   1479:    /*
                   1480:     * Gestion de la souris
                   1481:     */
                   1482: 
                   1483:    if ((*s_etat_processus).souris_active == d_vrai)
                   1484:    {
                   1485:        if (fprintf((*s_etat_processus).entree_standard,
                   1486:                "set mouse\n") < 0)
                   1487:        {
                   1488:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1489:            return;
                   1490:        }
                   1491:    }
                   1492:    else
                   1493:    {
                   1494:        if (fprintf((*s_etat_processus).entree_standard,
                   1495:                "unset mouse\n") < 0)
                   1496:        {
                   1497:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1498:            return;
                   1499:        }
                   1500:    }
                   1501: 
                   1502:    /*
                   1503:     * Affichage des tracés
                   1504:     */
                   1505: 
                   1506:    l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                   1507: 
                   1508:    if (strlen((*s_etat_processus).legende) > 0)
                   1509:    {
                   1510:        if (fprintf((*s_etat_processus).entree_standard,
                   1511:                "set key outside autotitle title \"%s\"\n",
                   1512:                (*s_etat_processus).legende) < 0)
                   1513:        {
                   1514:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1515:            return;
                   1516:        }
                   1517:    }
                   1518:    else
                   1519:    {
                   1520:        l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                   1521: 
                   1522:        while(l_fichier_courant != NULL)
                   1523:        {
                   1524:            if ((*l_fichier_courant).legende != NULL)
                   1525:            {
                   1526:                break;
                   1527:            }
                   1528: 
                   1529:            l_fichier_courant = (*l_fichier_courant).suivant;
                   1530:        }
                   1531: 
                   1532:        if (l_fichier_courant == NULL)
                   1533:        {
                   1534:            if (fprintf((*s_etat_processus).entree_standard, "unset key\n") < 0)
                   1535:            {
                   1536:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1537:                return;
                   1538:            }
                   1539:        }
                   1540:        else
                   1541:        {
                   1542:            if (fprintf((*s_etat_processus).entree_standard,
                   1543:                    "set key outside autotitle\n") < 0)
                   1544:            {
                   1545:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1546:                return;
                   1547:            }
                   1548:        }
                   1549:    }
                   1550: 
                   1551:    l_fichier_courant = (*s_etat_processus).fichiers_graphiques;
                   1552: 
                   1553:    if (l_fichier_courant != NULL)
                   1554:    {
                   1555:        if ((*l_fichier_courant).dimensions == 2)
                   1556:        {
                   1557:            if (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0)
                   1558:            {
                   1559:                if (fprintf((*s_etat_processus).entree_standard,
                   1560:                        "set boxwidth %d\n",
                   1561:                        ds_gnuplot_option_largeur_histogramme) < 0)
                   1562:                {
                   1563:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1564:                    return;
                   1565:                }
                   1566:            }
                   1567: 
                   1568:            if (fprintf((*s_etat_processus).entree_standard, "%s ",
                   1569:                    ds_gnuplot_commande_trace_2D) < 0)
                   1570:            {
                   1571:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1572:                return;
                   1573:            }
                   1574:        }
                   1575:        else
                   1576:        {
                   1577:            if (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0)
                   1578:            {
                   1579:                if (fprintf((*s_etat_processus).entree_standard,
                   1580:                        "set hidden3d\n") < 0)
                   1581:                {
                   1582:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1583:                    return;
                   1584:                }
                   1585:            }
                   1586:            else
                   1587:            {
                   1588:                if (fprintf((*s_etat_processus).entree_standard,
                   1589:                        "unset hidden3d\n") < 0)
                   1590:                {
                   1591:                    (*s_etat_processus).erreur_systeme = d_es_processus;
                   1592:                    return;
                   1593:                }
                   1594:            }
                   1595: 
                   1596:            if (fprintf((*s_etat_processus).entree_standard, "%s ",
                   1597:                    ds_gnuplot_commande_trace_3D) < 0)
                   1598:            {
                   1599:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1600:                return;
                   1601:            }
                   1602:        }
                   1603:    }
                   1604: 
                   1605:    while(l_fichier_courant != NULL)
                   1606:    {
                   1607:        if ((strcmp((*l_fichier_courant).type, "FONCTION") == 0) ||
                   1608:                (strcmp((*l_fichier_courant).type, "PARAMETRIQUE") == 0) ||
                   1609:                (strcmp((*l_fichier_courant).type, "POLAIRE") == 0) ||
                   1610:                (strcmp((*l_fichier_courant).type, "COURBES DE NIVEAU") == 0))
                   1611:        {
                   1612:            if (fprintf((*s_etat_processus).entree_standard,
                   1613:                    "\"%s\" axes %s %s",
                   1614:                    (*l_fichier_courant).nom,
                   1615:                    ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
                   1616:                    ds_gnuplot_option_2D) < 0)
                   1617:            {
                   1618:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1619:                return;
                   1620:            }
                   1621:        }
                   1622:        else if (strcmp((*l_fichier_courant).type, "POINTS") == 0)
                   1623:        {
                   1624:            if (fprintf((*s_etat_processus).entree_standard,
                   1625:                    "\"%s\" axes %s %s",
                   1626:                    (*l_fichier_courant).nom,
                   1627:                    ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
                   1628:                    ds_gnuplot_option_nuages) < 0)
                   1629:            {
                   1630:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1631:                return;
                   1632:            }
                   1633:        }
                   1634:        else if (strcmp((*l_fichier_courant).type, "HISTOGRAMME") == 0)
                   1635:        {
                   1636:            if (fprintf((*s_etat_processus).entree_standard,
                   1637:                    "\"%s\" axes %s %s",
                   1638:                    (*l_fichier_courant).nom,
                   1639:                    ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
                   1640:                    ds_gnuplot_option_histogramme)
                   1641:                    < 0)
                   1642:            {
                   1643:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1644:                return;
                   1645:            }
                   1646:        }
                   1647:        else if (strcmp((*l_fichier_courant).type, "TABLE TRACANTE") == 0)
                   1648:        {
                   1649:            if (fprintf((*s_etat_processus).entree_standard,
                   1650:                    "\"%s\" axes %s %s",
                   1651:                    (*l_fichier_courant).nom,
                   1652:                    ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
                   1653:                    ds_gnuplot_option_table_tracante)
                   1654:                    < 0)
                   1655:            {
                   1656:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1657:                return;
                   1658:            }
                   1659:        }
                   1660:        else if (strcmp((*l_fichier_courant).type, "DESSIN") == 0)
                   1661:        {
                   1662:            if (fprintf((*s_etat_processus).entree_standard,
                   1663:                    "\"%s\" axes %s %s",
                   1664:                    (*l_fichier_courant).nom,
                   1665:                    ((*l_fichier_courant).systeme_axes == 0) ? "x1y1" : "x2y2",
                   1666:                    ds_gnuplot_option_table_tracante)
                   1667:                    < 0)
                   1668:            {
                   1669:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1670:                return;
                   1671:            }
                   1672:        }
                   1673:        else if (strcmp((*l_fichier_courant).type, "GRILLE 3D") == 0)
                   1674:        {
                   1675:            if (fprintf((*s_etat_processus).entree_standard, "\"%s\" %s",
                   1676:                    (*l_fichier_courant).nom, ds_gnuplot_option_3D) < 0)
                   1677:            {
                   1678:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1679:                return;
                   1680:            }
                   1681:        }
                   1682: 
                   1683:        if ((*l_fichier_courant).legende == NULL)
                   1684:        {
                   1685:            if (fprintf((*s_etat_processus).entree_standard, " notitle") < 0)
                   1686:            {
                   1687:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1688:                return;
                   1689:            }
                   1690:        }
                   1691:        else
                   1692:        {
                   1693:            if (fprintf((*s_etat_processus).entree_standard, " title \"%s\"",
                   1694:                    (*l_fichier_courant).legende) < 0)
                   1695:            {
                   1696:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1697:                return;
                   1698:            }
                   1699:        }
                   1700: 
                   1701:        if (fflush((*s_etat_processus).entree_standard) != 0)
                   1702:        {
                   1703:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1704:            return;
                   1705:        }
                   1706: 
                   1707:        l_fichier_courant = (*l_fichier_courant).suivant;
                   1708: 
                   1709:        if (l_fichier_courant != NULL)
                   1710:        {
                   1711:            if (fprintf((*s_etat_processus).entree_standard, ", ") < 0)
                   1712:            {
                   1713:                (*s_etat_processus).erreur_systeme = d_es_processus;
                   1714:                return;
                   1715:            }
                   1716:        }
                   1717:    }
                   1718: 
                   1719:    if (fprintf((*s_etat_processus).entree_standard, "\n") < 0)
                   1720:    {
                   1721:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1722:        return;
                   1723:    }
                   1724: 
                   1725:    if (fflush((*s_etat_processus).entree_standard) != 0)
                   1726:    {
                   1727:        (*s_etat_processus).erreur_systeme = d_es_processus;
                   1728:        return;
                   1729:    }
                   1730: 
                   1731:    if (persistance == 'I')
                   1732:    {
                   1733:        if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
                   1734:        {
                   1735:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1736:            return;
                   1737:        }
                   1738:        
                   1739:        if (fflush((*s_etat_processus).entree_standard) != 0)
                   1740:        {
                   1741:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1742:            return;
                   1743:        }
                   1744: 
                   1745:        if (pclose((*s_etat_processus).entree_standard) == -1)
                   1746:        {
                   1747:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1748:            return;
                   1749:        }
                   1750: 
                   1751:        (*s_etat_processus).entree_standard = entree_standard;
                   1752: 
                   1753:        /*
                   1754:         * Création, le cas échéant, du fichier d'impression
                   1755:         */
                   1756: 
                   1757:        if ((*s_etat_processus).nom_fichier_impression == NULL)
                   1758:        {
                   1759:            if ((fichier_impression =
                   1760:                    creation_fichier_tex(s_etat_processus)) == NULL)
                   1761:            {
                   1762:                return;
                   1763:            }
                   1764:        }
                   1765:        else
                   1766:        {
                   1767:            if ((fichier_impression = fopen((*s_etat_processus)
                   1768:                    .nom_fichier_impression, "a")) == NULL)
                   1769:            {
                   1770:                (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1771:                return;
                   1772:            }
                   1773:        }
                   1774: 
                   1775:        if (fflush(NULL) != 0)
                   1776:        {
                   1777:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1778:            return;
                   1779:        }
                   1780: 
                   1781:        if ((fichier_image = fopen(nom_fichier, "r")) == NULL)
                   1782:        {
                   1783:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1784:            return;
                   1785:        }
                   1786: 
1.4       bertrand 1787:        if (tex_fprintf(s_etat_processus, fichier_impression,
                   1788:                    "\\begin{figure}[hp]\n") < 0)
1.1       bertrand 1789:        {
                   1790:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1791:            return;
                   1792:        }
                   1793: 
                   1794:        while((caractere = getc(fichier_image)) != EOF)
                   1795:        {
                   1796:            if (putc(caractere, fichier_impression) == EOF)
                   1797:            {
                   1798:                (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1799:                return;
                   1800:            }
                   1801:        }
                   1802: 
1.4       bertrand 1803:        if (fclose(fichier_image) != 0)
                   1804:        {
                   1805:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1806:            return;
                   1807:        }
1.1       bertrand 1808: 
                   1809:        if (strlen((*s_etat_processus).titre) > 0)
                   1810:        {
1.4       bertrand 1811:            if (tex_fprintf(s_etat_processus, fichier_impression,
                   1812:                    "\\caption{%s}\n", (*s_etat_processus).titre) < 0)
1.1       bertrand 1813:            {
                   1814:                (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1815:                return;
                   1816:            }
                   1817:        }
                   1818: 
1.4       bertrand 1819:        if (tex_fprintf(s_etat_processus, fichier_impression,
                   1820:                    "\\end{figure}\n") < 0)
1.1       bertrand 1821:        {
                   1822:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1823:            return;
                   1824:        }
                   1825: 
                   1826:        if (fclose(fichier_impression) != 0)
                   1827:        {
                   1828:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1829:            return;
                   1830:        }
                   1831: 
                   1832:        if (destruction_fichier(nom_fichier) == d_erreur)
                   1833:        {
                   1834:            (*s_etat_processus).erreur_systeme = d_es_erreur_fichier;
                   1835:            return;
                   1836:        }
                   1837: 
                   1838:        free(nom_fichier);
                   1839:    }
                   1840:    else if (persistance == 'E')
                   1841:    {
                   1842:        if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
                   1843:        {
                   1844:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1845:            return;
                   1846:        }
                   1847:        
                   1848:        if (fflush((*s_etat_processus).entree_standard) != 0)
                   1849:        {
                   1850:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1851:            return;
                   1852:        }
                   1853: 
                   1854:        if (pclose((*s_etat_processus).entree_standard) == -1)
                   1855:        {
                   1856:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1857:            return;
                   1858:        }
                   1859: 
                   1860:        (*s_etat_processus).entree_standard = entree_standard;
                   1861:    }
                   1862:    else if (entree_standard != NULL)
                   1863:    {
                   1864:        if (fprintf((*s_etat_processus).entree_standard, "quit\n") < 0)
                   1865:        {
                   1866:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1867:            return;
                   1868:        }
                   1869: 
                   1870:        if (fflush((*s_etat_processus).entree_standard) != 0)
                   1871:        {
                   1872:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1873:            return;
                   1874:        }
                   1875: 
                   1876:        if (pclose((*s_etat_processus).entree_standard) == -1)
                   1877:        {
                   1878:            (*s_etat_processus).erreur_systeme = d_es_processus;
                   1879:            return;
                   1880:        }
                   1881: 
                   1882:        (*s_etat_processus).entree_standard = entree_standard;
                   1883:    }
                   1884: 
                   1885:    return;
                   1886: }
                   1887: 
                   1888: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>