Exemplo n.º 1
0
Arquivo: shell.c Projeto: Grotke/shell
void parseHistoryMarker(char * argList[]){
	int commandNumber = atoi(argList[0]+1);
	if(commandNumber){
		int commandIndex = getCommandIndex(commandNumber);
		if(-1 == commandIndex){
			printf("No such command in history.\n");
		}
		else{	
			tokenNumber = numberOfTokensInCommand[commandIndex];
			args = copyArgList(previousCommands[commandIndex], tokenNumber);
			background = runInBackground[commandIndex];
			printf("%s\n", makeCommandOneLine(commandIndex));
		}
	}
}
/*----------------------------------------------------------------------------*/
int firstPassCommandsManager(Data * data, char * tag){
    char command[5];
    int operandNum;
    int commandIndex;

    if (sscanf(data->line, "%4s", command) == 0){
        printf("[Error] on line %d:- command error invalid \n", data->lc);
        data->containError=TRUE;
        return 0;
    }
    commandIndex = getCommandIndex(command);
    if (commandIndex == -1){
        printf("[Error] on line %d:- command error not defined\n", data->lc);
        data->containError=TRUE;
        return 0;
    }
    data->line+=strlen(command);

    if(!isspace(*(data->line))){
        printf("[Error] on line %d:- extra characters or no space after command name\n", data->lc);
        data->containError=TRUE;
        return 0;
    }

    eatSpace(data);
    operandNum = getNumOfOperands(commandIndex);

    if(operandNum==0){
        return checkZeroOperands(data,tag);
    }else if(operandNum==1){
        return checkOneOperands(data, tag);
    }else if(operandNum==2){
        return checkTwoOperands(data, tag,command);
    }
    return 0;
}
Exemplo n.º 3
0
int main(int argc,char *argv[])
{
	const int BUF_SIZE=1024;
	const int CMDLEN=50;
	int sockfd;//atoi(argv[1]);
	struct FTS fts;
	char command[BUF_SIZE];
	int index;
	struct COMMAND cmd;
	char user[CMDLEN];
	char arg[BUF_SIZE];
	const char* prompt="FTS> ";
	int numlogs,logfilesize;
	struct CONFIG_READER cfg;
	struct LOGGER lg;
	char ip[CMDLEN];
	llg=≶
	signal(SIGKILL,handle);
	createConfigReader(&cfg,"config.cfg");
	//printf("after config reader\n");
	getConfigValue("NLOGFILES",arg,&cfg);
	numlogs=atoi(arg);
	getConfigValue("LOGFILESIZE",arg,&cfg);
	logfilesize=atoi(arg);
	destroyConfigReader(&cfg);
	//printf("after destroy config reader\n");
	createLogger(&lg,"client_log","./client_logs",numlogs,logfilesize);
	//printf("after create logger\n");
	strncpy(arg,argv[1],BUF_SIZE);
	//printf("arg: %s\n",arg);
	strncpy(user,strtok(arg,"@"),BUF_SIZE);
	//printf("user: %s\n",user);
	strncpy(ip,strtok(NULL,"@"),BUF_SIZE);
	//printf("before connections\n");
	fts.sockfd=sockfd=connectToServer(ip);
	fts.mode=FTS_MODE_ASCII;
	//printf("sock: %d\n",sockfd);
	//printf("user: %s\n",user);
	write(sockfd,user,strlen(user));
	read(sockfd,&index,sizeof(index));
	//printf("%d\n",index);
	if(index==-1)
	{
		puts("user not found");
		exit(0);
	}
	puts("connected successfully");
	while(1)
	{
		printf("%s",prompt);
		fflush(stdout);
		fgets(command,BUF_SIZE,stdin);
		while(command[0]=='\0' || command[0]==' ' || command[0]=='\n')
			fgets(command,BUF_SIZE,stdin);
		if(command[strlen(command)-1]=='\n')
			command[strlen(command)-1]='\0';
		//printf("cmd: %s\n",command);
		writeToLogFile(command,&lg);
		fillCommandObject(command,&cmd);
		index=getCommandIndex(&cmd,(struct CMD_MAP *)&cmd_map);
		if(index < 0)
		{
			puts("Command not found");
			continue;
		}
		cmd_map[index].handler(&cmd,&fts);
		destroyCommandObject (&cmd);
	}
	return (0);
}
Exemplo n.º 4
0
int Sci1SongIterator::nextCommand(byte *buf, int *result) {

	if (!_initialised) {
		//printf("[iterator] DEBUG: Initialising for %d\n", _deviceId);
		_initialised = true;
		if (initSong())
			return SI_FINISHED;
	}


	if (_delayRemaining) {
		int delay = _delayRemaining;
		_delayRemaining = 0;
		return delay;
	}

	int retval = 0;
	do {	 /* All delays must be processed separately */
		int chan = getCommandIndex();

		if (chan == COMMAND_INDEX_NONE) {
			return SI_FINISHED;
		}

		if (chan == COMMAND_INDEX_PCM) {

			if (_samples.begin()->announced) {
				/* Already announced; let's discard it */
				Audio::AudioStream *feed = getAudioStream();
				delete feed;
			} else {
				int delay = _samples.begin()->delta;

				if (delay) {
					updateDelta(delay);
					return delay;
				}
				/* otherwise we're touching a PCM */
				_samples.begin()->announced = true;
				return SI_PCM;
			}
		} else { /* Not a PCM */

			retval = processMidi(buf, result,
			                     &(_channels[chan]),
			                     PARSE_FLAG_LOOPS_UNLIMITED);

			if (retval == SI_LOOP) {
				_numLoopedChannels++;
				_channels[chan].state = SI_STATE_PENDING;
				_channels[chan].delay = 0;

				if (_numLoopedChannels == _numActiveChannels) {
					int i;

					/* Everyone's ready: Let's loop */
					for (i = 0; i < _numChannels; i++)
						if (_channels[i].state == SI_STATE_PENDING)
							_channels[i].state = SI_STATE_DELTA_TIME;

					_numLoopedChannels = 0;
					return SI_LOOP;
				}
			} else if (retval == SI_FINISHED) {
#ifdef DEBUG
				fprintf(stderr, "FINISHED some channel\n");
#endif
			} else if (retval > 0) {
				int sd ;
				sd = getSmallestDelta();

				if (noDeltaTime() && sd) {
					/* No other channel is ready */
					updateDelta(sd);

					/* Only from here do we return delta times */
					return sd;
				}
			}

		} /* Not a PCM */

	} while (retval > 0);

	return retval;
}