mirror of
				https://github.com/Swordfish90/cool-retro-term.git
				synced 2025-11-04 00:52:11 +00:00 
			
		
		
		
	Reorganizing last commit. Changes to kpty.cpp were moved to file utmpmac.cpp. Thus I modified .pro
file to add this new file utmpmac to be compiled. I have put both .cpp and .h files inside a macro so that they are only considered when building from a mac. Same with include from kpty.cpp.
This commit is contained in:
		@@ -43,7 +43,8 @@ SOURCES += \
 | 
				
			|||||||
        $$PWD/src/Filter.cpp \
 | 
					        $$PWD/src/Filter.cpp \
 | 
				
			||||||
        $$PWD/src/ColorScheme.cpp \
 | 
					        $$PWD/src/ColorScheme.cpp \
 | 
				
			||||||
        $$PWD/src/TerminalDisplay.cpp \
 | 
					        $$PWD/src/TerminalDisplay.cpp \
 | 
				
			||||||
        $$PWD/src/ksession.cpp
 | 
					        $$PWD/src/ksession.cpp \
 | 
				
			||||||
 | 
					    src/utmpmac.cpp
 | 
				
			||||||
 | 
					
 | 
				
			||||||
HEADERS += \
 | 
					HEADERS += \
 | 
				
			||||||
        $$PWD/src/plugin.h \
 | 
					        $$PWD/src/plugin.h \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -135,188 +135,10 @@ extern "C" {
 | 
				
			|||||||
# endif
 | 
					# endif
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// http://markmail.org/download.xqy?id=atu7scqmvlsku4n5&number=2
 | 
					#if defined (__APPLE__)
 | 
				
			||||||
typedef enum { F=0, T=1 } boolean;
 | 
					#include "utmpmac.h"
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int utmpfd = -1;
 | 
					 | 
				
			||||||
static char utmpath[PATH_MAX+1] = _PATH_UTMP;
 | 
					 | 
				
			||||||
static boolean readonly = F;
 | 
					 | 
				
			||||||
static struct utmp utmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
struct utmp *getutent();
 | 
					 | 
				
			||||||
struct utmp *getutid( struct utmp * );
 | 
					 | 
				
			||||||
struct utmp *getutline( struct utmp * );
 | 
					 | 
				
			||||||
void pututline( struct utmp * );
 | 
					 | 
				
			||||||
void setutent();
 | 
					 | 
				
			||||||
void endutent();
 | 
					 | 
				
			||||||
void utmpname( char * );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 static
 | 
					 | 
				
			||||||
 struct utmp *
 | 
					 | 
				
			||||||
_getutent( struct utmp *utmp )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  if ( utmpfd == -1 )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if ( (utmpfd = open(utmpath,O_RDWR)) == -1 )
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          if ( (utmpfd = open(utmpath,O_RDONLY)) == -1 )
 | 
					 | 
				
			||||||
            return NULL;
 | 
					 | 
				
			||||||
          else
 | 
					 | 
				
			||||||
            readonly = T;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      else
 | 
					 | 
				
			||||||
        readonly = F;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ( read(utmpfd,utmp,sizeof(struct utmp)) == sizeof(struct utmp) )
 | 
					 | 
				
			||||||
    return utmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 struct utmp *
 | 
					 | 
				
			||||||
getutent()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  return _getutent( &utmp );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 struct utmp *
 | 
					 | 
				
			||||||
getutid( struct utmp *id )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  struct utmp *up;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ( strncmp(id->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 )
 | 
					 | 
				
			||||||
    return &utmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  while( (up = getutent()) != NULL )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if ( strncmp(id->ut_name,up->ut_name,UT_NAMESIZE) == 0 )
 | 
					 | 
				
			||||||
        return up;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 struct utmp *
 | 
					 | 
				
			||||||
getutline( struct utmp *line )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  struct utmp *up;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ( strncmp(line->ut_line,utmp.ut_line,UT_LINESIZE) == 0 )
 | 
					 | 
				
			||||||
    return &utmp;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  while( (up = getutent()) != NULL )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if ( strncmp(line->ut_line,up->ut_line,UT_LINESIZE) == 0 )
 | 
					 | 
				
			||||||
        return up;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  return NULL;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 void
 | 
					 | 
				
			||||||
pututline( struct utmp *up )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  struct utmp temp;
 | 
					 | 
				
			||||||
  struct stat buf;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /* Note that UP might be equal to &UTMP */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ( strncmp(up->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 )
 | 
					 | 
				
			||||||
    /* File already at correct position */
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      if ( ! readonly )
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR );
 | 
					 | 
				
			||||||
          write( utmpfd, up, sizeof(struct utmp) );
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      utmp = *up;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    /* File is not at the correct postion; read forward, but do not destroy 
 | 
					 | 
				
			||||||
UTMP */
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      while( _getutent(&temp) != NULL )
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          if ( strncmp(up->ut_name,temp.ut_name,UT_NAMESIZE) == 0 )
 | 
					 | 
				
			||||||
            /* File is now at the correct position */
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              if ( ! readonly )
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                  lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR );
 | 
					 | 
				
			||||||
                  write( utmpfd, up, sizeof(struct utmp) );
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
              utmp = *up;
 | 
					 | 
				
			||||||
              return;
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      /* File is now at EOF */
 | 
					 | 
				
			||||||
      if ( ! readonly )
 | 
					 | 
				
			||||||
        {
 | 
					 | 
				
			||||||
          if ( fstat(utmpfd,&buf) == 0 && lseek(utmpfd,0,SEEK_END) != -1 )
 | 
					 | 
				
			||||||
            {
 | 
					 | 
				
			||||||
              if ( write(utmpfd,up,sizeof(struct utmp)) != sizeof(struct utmp) 
 | 
					 | 
				
			||||||
)
 | 
					 | 
				
			||||||
                ftruncate( utmpfd, buf.st_size );
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      utmp = *up;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 void
 | 
					 | 
				
			||||||
setutent()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  if ( utmpfd != -1 )
 | 
					 | 
				
			||||||
    lseek( utmpfd, 0, SEEK_SET );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 void
 | 
					 | 
				
			||||||
endutent()
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  if ( utmpfd != -1 )
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
      close( utmpfd );
 | 
					 | 
				
			||||||
      utmpfd = -1;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
      memset( &utmp, 0, sizeof(struct utmp) );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 void
 | 
					 | 
				
			||||||
utmpname( char *file )
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
  endutent();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  strncpy( utmpath, file, PATH_MAX );
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
// https://dev.mobileread.com/svn/iliados/upstream/tinylogin-1.4/libbb/libc5.c
 | 
					 | 
				
			||||||
void updwtmp(const char *wtmp_file, const struct utmp *lutmp)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
        int fd;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        fd = open(wtmp_file, O_APPEND | O_WRONLY, 0);
 | 
					 | 
				
			||||||
        if (fd >= 0) {
 | 
					 | 
				
			||||||
                if (lockf(fd, F_LOCK, 0)==0) {
 | 
					 | 
				
			||||||
                        write(fd, (const char *) lutmp, sizeof(struct utmp));
 | 
					 | 
				
			||||||
                        lockf(fd, F_ULOCK, 0);
 | 
					 | 
				
			||||||
                        close(fd);
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
//#include <kdebug.h>
 | 
					//#include <kdebug.h>
 | 
				
			||||||
//#include <kstandarddirs.h>  // findExe
 | 
					//#include <kstandarddirs.h>  // findExe
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										186
									
								
								konsole-qml-plugin/src/utmpmac.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								konsole-qml-plugin/src/utmpmac.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,186 @@
 | 
				
			|||||||
 | 
					#if defined (__APPLE__)
 | 
				
			||||||
 | 
					#include "utmpmac.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef enum { F=0, T=1 } boolean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int utmpfd = -1;
 | 
				
			||||||
 | 
					static char utmpath[PATH_MAX+1] = _PATH_UTMP;
 | 
				
			||||||
 | 
					static boolean readonly = F;
 | 
				
			||||||
 | 
					static struct utmp utmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct utmp *getutent();
 | 
				
			||||||
 | 
					struct utmp *getutid( struct utmp * );
 | 
				
			||||||
 | 
					struct utmp *getutline( struct utmp * );
 | 
				
			||||||
 | 
					void pututline( struct utmp * );
 | 
				
			||||||
 | 
					void setutent();
 | 
				
			||||||
 | 
					void endutent();
 | 
				
			||||||
 | 
					void utmpname( char * );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 static
 | 
				
			||||||
 | 
					 struct utmp *
 | 
				
			||||||
 | 
					_getutent( struct utmp *utmp )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( utmpfd == -1 )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if ( (utmpfd = open(utmpath,O_RDWR)) == -1 )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if ( (utmpfd = open(utmpath,O_RDONLY)) == -1 )
 | 
				
			||||||
 | 
					            return NULL;
 | 
				
			||||||
 | 
					          else
 | 
				
			||||||
 | 
					            readonly = T;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      else
 | 
				
			||||||
 | 
					        readonly = F;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( read(utmpfd,utmp,sizeof(struct utmp)) == sizeof(struct utmp) )
 | 
				
			||||||
 | 
					    return utmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 struct utmp *
 | 
				
			||||||
 | 
					getutent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  return _getutent( &utmp );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 struct utmp *
 | 
				
			||||||
 | 
					getutid( struct utmp *id )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct utmp *up;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( strncmp(id->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 )
 | 
				
			||||||
 | 
					    return &utmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while( (up = getutent()) != NULL )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if ( strncmp(id->ut_name,up->ut_name,UT_NAMESIZE) == 0 )
 | 
				
			||||||
 | 
					        return up;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 struct utmp *
 | 
				
			||||||
 | 
					getutline( struct utmp *line )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct utmp *up;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( strncmp(line->ut_line,utmp.ut_line,UT_LINESIZE) == 0 )
 | 
				
			||||||
 | 
					    return &utmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  while( (up = getutent()) != NULL )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if ( strncmp(line->ut_line,up->ut_line,UT_LINESIZE) == 0 )
 | 
				
			||||||
 | 
					        return up;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  return NULL;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					pututline( struct utmp *up )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  struct utmp temp;
 | 
				
			||||||
 | 
					  struct stat buf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /* Note that UP might be equal to &UTMP */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ( strncmp(up->ut_name,utmp.ut_name,UT_NAMESIZE) == 0 )
 | 
				
			||||||
 | 
					    /* File already at correct position */
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      if ( ! readonly )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR );
 | 
				
			||||||
 | 
					          write( utmpfd, up, sizeof(struct utmp) );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      utmp = *up;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    /* File is not at the correct postion; read forward, but do not destroy 
 | 
				
			||||||
 | 
					UTMP */
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      while( _getutent(&temp) != NULL )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if ( strncmp(up->ut_name,temp.ut_name,UT_NAMESIZE) == 0 )
 | 
				
			||||||
 | 
					            /* File is now at the correct position */
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              if ( ! readonly )
 | 
				
			||||||
 | 
					                {
 | 
				
			||||||
 | 
					                  lseek( utmpfd, -(off_t)sizeof(struct utmp), SEEK_CUR );
 | 
				
			||||||
 | 
					                  write( utmpfd, up, sizeof(struct utmp) );
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					              utmp = *up;
 | 
				
			||||||
 | 
					              return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      /* File is now at EOF */
 | 
				
			||||||
 | 
					      if ( ! readonly )
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					          if ( fstat(utmpfd,&buf) == 0 && lseek(utmpfd,0,SEEK_END) != -1 )
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					              if ( write(utmpfd,up,sizeof(struct utmp)) != sizeof(struct utmp) 
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					                ftruncate( utmpfd, buf.st_size );
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      utmp = *up;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					setutent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( utmpfd != -1 )
 | 
				
			||||||
 | 
					    lseek( utmpfd, 0, SEEK_SET );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					endutent()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  if ( utmpfd != -1 )
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      close( utmpfd );
 | 
				
			||||||
 | 
					      utmpfd = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      memset( &utmp, 0, sizeof(struct utmp) );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 void
 | 
				
			||||||
 | 
					utmpname( char *file )
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					  endutent();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  strncpy( utmpath, file, PATH_MAX );
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					// https://dev.mobileread.com/svn/iliados/upstream/tinylogin-1.4/libbb/libc5.c
 | 
				
			||||||
 | 
					void updwtmp(const char *wtmp_file, const struct utmp *lutmp)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					        int fd;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        fd = open(wtmp_file, O_APPEND | O_WRONLY, 0);
 | 
				
			||||||
 | 
					        if (fd >= 0) {
 | 
				
			||||||
 | 
					                if (lockf(fd, F_LOCK, 0)==0) {
 | 
				
			||||||
 | 
					                        write(fd, (const char *) lutmp, sizeof(struct utmp));
 | 
				
			||||||
 | 
					                        lockf(fd, F_ULOCK, 0);
 | 
				
			||||||
 | 
					                        close(fd);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
							
								
								
									
										13
									
								
								konsole-qml-plugin/src/utmpmac.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								konsole-qml-plugin/src/utmpmac.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					#if defined (__APPLE__)
 | 
				
			||||||
 | 
					# include <utmp.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					struct utmp *getutent();
 | 
				
			||||||
 | 
					struct utmp *getutid( struct utmp * );
 | 
				
			||||||
 | 
					struct utmp *getutline( struct utmp * );
 | 
				
			||||||
 | 
					void pututline( struct utmp * );
 | 
				
			||||||
 | 
					void setutent();
 | 
				
			||||||
 | 
					void endutent();
 | 
				
			||||||
 | 
					void utmpname( char * );
 | 
				
			||||||
 | 
					void updwtmp(const char *wtmp_file, const struct utmp *lutmp);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
		Reference in New Issue
	
	Block a user