utilities_linux.h - Biblioteca com diversas funções para o Linux

Publicado por Mauricio Ferrari (última atualização em 03/05/2020)

[ Hits: 1.043 ]

Homepage: https://www.youtube.com/@LinuxDicasPro

Download utilities_linux.h




Essa biblioteca possui métodos de funções para o Linux que eu encontrei na internet. Então juntei tudo e fiz algumas adaptações para ficar ao meu gosto.

  



Esconder código-fonte

/****************************************************************************************************

Biblioteca utilities_linux.h 

By Mauricio Ferrari - 10/02/2020.

Funções Adaptadas dos Autores:
Fabio Junior Sabai - 29/11/2004
Marcos Paulo Ferreira - 27/12/2012

****************************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <termios.h>

/****************************************************************************************************/

/** Defines. **/

#define getch() init_attr(1); _getch();
#define getche() init_attr(1); _getche();
#define kbhit() init_attr(0); _kbhit();

/****************************************************************************************************/

/** Declarações de Funções. **/

void rl_ttyset(int rst);
void init_attr(int x);
void close_attr();
int _getch(void);
int _getche(void);
int _kbhit(void);
static char *gets(char *str);

struct termios old_attr, new_attr;

/****************************************************************************************************/

/** rl_ttyset - Função Para Ler Teclas Pressionadas Pela Função getc sem Pressionar ENTER. **/

void rl_ttyset(int rst){
   static struct termios old;
   struct termios new;
   if(rst==0){
      (void) tcgetattr(0, &old);
      new=old;
      new.c_lflag &=~(ECHO|ICANON);
      new.c_iflag &=~(ISTRIP|INPCK);
      (void) tcsetattr(0, TCSANOW, &new);
   }else{
      (void) tcsetattr(0, TCSANOW, &old);
   }
}

/****************************************************************************************************/

/** init_attr - Função para Desligar o Modo Canônico. **/

void init_attr(int x){
   tcgetattr(0,&old_attr);
   new_attr=old_attr;
   new_attr.c_lflag &=~ICANON;
   new_attr.c_cc[VTIME]=0;
   new_attr.c_cc[VMIN]=x;
}

/****************************************************************************************************/

/** close_attr - Função para Restaurar o Modo Canônico. **/

void close_attr(){
   tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
}

/****************************************************************************************************/

/** _getch - Implementação do getch no Linux. **/

int _getch(void){
   int c;
   new_attr.c_lflag &=~ECHO;
   tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
   c=getchar();
   tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
return c;
}

/****************************************************************************************************/

/** _getche - Implementação do getche no Linux. **/

int _getche(void) {
   int c ;
   new_attr.c_lflag &=ECHO;
   tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
   c=getchar();
   tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
   return c;
}

/****************************************************************************************************/

/** _kbhit - Implementação do kbhit no Linux. **/

int _kbhit(void) {
   int c;
   tcsetattr(STDIN_FILENO,TCSANOW,&new_attr);
   c=getchar();
   tcsetattr(STDIN_FILENO,TCSANOW,&old_attr);
   return c;
}

/****************************************************************************************************/

/** gets - Alguns Compiladores do Linux não Possuem mais o gets. **/

static char *gets(char *str){
   int c;
   int n=0;
   while((c=getchar())!=EOF && c!='\n')
   str[n++]=c;
   str[n]='\0';
   return n==0 && c==EOF? NULL: str;
}

/****************************************************************************************************/

Scripts recomendados

Patch para Zsnes 1.51 com GCC>=4.3

Gerador de letras

Regra de Horner para cálculo do polinômio

Jogo Tetris em C - parte 1

C join


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts