![]() ![]() | ![]() |
Passage de la branche 4.1 en branche stable.
1: /* 2: ================================================================================ 3: RPL/2 (R) version 4.1.0 4: Copyright (C) 1989-2011 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: 25: 26: /* 27: ================================================================================ 28: Procédures de contrôle de la complétion automatique 29: ================================================================================ 30: Entrée : 31: -------------------------------------------------------------------------------- 32: Sortie : 33: -------------------------------------------------------------------------------- 34: Effets de bord : néant 35: ================================================================================ 36: */ 37: 38: void 39: initialisation_completion() 40: { 41: rl_attempted_completion_function = (CPPFunction *) completion_rpl; 42: } 43: 44: 45: char ** 46: completion_rpl(char *texte, int debut, int fin) 47: { 48: return rl_completion_matches(texte, generateur_commandes); 49: } 50: 51: 52: char * 53: generateur_commandes(char *texte, int etat) 54: { 55: char *nom; 56: char *tampon; 57: 58: static int indice; 59: static int longueur; 60: 61: # define COMPLETION 62: # include "completion-conv.h" 63: 64: if (!etat) 65: { 66: indice = 0; 67: longueur = strlen(texte); 68: } 69: 70: while((nom = commandes[indice]) != NULL) 71: { 72: indice++; 73: 74: if (strncmp(nom, texte, longueur) == 0) 75: { 76: tampon = malloc((strlen(nom) + 1) * sizeof(char)); 77: 78: if (tampon == NULL) 79: { 80: return(NULL); 81: } 82: else 83: { 84: return(strcpy(tampon, nom)); 85: } 86: } 87: } 88: 89: return((char *) NULL); 90: } 91: 92: // vim: ts=4