Compare commits
	
		
			16 Commits
		
	
	
		
			b69610d7f3
			...
			osx
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					462831ca66 | ||
| 
						 | 
					273ac3d126 | ||
| 
						 | 
					4a7e23f024 | ||
| 
						 | 
					84e0feb626 | ||
| 
						 | 
					906e981449 | ||
| 
						 | 
					d887842bdc | ||
| 
						 | 
					ed701b0ac6 | ||
| 
						 | 
					e9e3732b26 | ||
| 
						 | 
					2f11060364 | ||
| 
						 | 
					d3d1407ca7 | ||
| 
						 | 
					5586c36efe | ||
| 
						 | 
					4064a38998 | ||
| 
						 | 
					5978a0de70 | ||
| 
						 | 
					9d7efad798 | ||
| 
						 | 
					d063e888a3 | ||
| 
						 | 
					c612a1d586 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -34,3 +34,5 @@ Makefile*
 | 
			
		||||
# Others
 | 
			
		||||
 | 
			
		||||
*.xcf
 | 
			
		||||
 | 
			
		||||
/imports/
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							@@ -63,6 +63,20 @@ You can also install this [package](https://aur.archlinux.org/packages/cool-old-
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
**OS X**
 | 
			
		||||
 | 
			
		||||
    brew install qt5
 | 
			
		||||
    export CPPFLAGS="-I/usr/local/opt/qt5/include"
 | 
			
		||||
    export LDFLAGS="-L/usr/local/opt/qt5/lib"
 | 
			
		||||
    export PATH=/usr/local/opt/qt5/bin:$PATH
 | 
			
		||||
    git clone https://github.com/Swordifish90/cool-old-term.git
 | 
			
		||||
    git checkout osx
 | 
			
		||||
    qmake && make && make install
 | 
			
		||||
    # Have fun!
 | 
			
		||||
    ./cool-old-term
 | 
			
		||||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
**Anyone else**
 | 
			
		||||
 | 
			
		||||
Install Qt directly from here http://qt-project.org/downloads . Once done export them in you path (replace "_/opt/Qt5.3.1/5.3/gcc_64/bin_" with your correct folder):
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,3 @@
 | 
			
		||||
TEMPLATE =subdirs
 | 
			
		||||
CONFIG += ordered
 | 
			
		||||
SUBDIRS= konsole-qml-plugin\
 | 
			
		||||
         app
 | 
			
		||||
SUBDIRS= konsole-qml-plugin
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -43,7 +43,8 @@ SOURCES += \
 | 
			
		||||
        $$PWD/src/Filter.cpp \
 | 
			
		||||
        $$PWD/src/ColorScheme.cpp \
 | 
			
		||||
        $$PWD/src/TerminalDisplay.cpp \
 | 
			
		||||
        $$PWD/src/ksession.cpp
 | 
			
		||||
        $$PWD/src/ksession.cpp \
 | 
			
		||||
        $$PWD/src/utmpmac.cpp
 | 
			
		||||
 | 
			
		||||
HEADERS += \
 | 
			
		||||
        $$PWD/src/plugin.h \
 | 
			
		||||
@@ -75,6 +76,7 @@ HEADERS += \
 | 
			
		||||
        $$PWD/src/ColorScheme.h \
 | 
			
		||||
        $$PWD/src/TerminalDisplay.h \
 | 
			
		||||
        $$PWD/src/ksession.h
 | 
			
		||||
        $$PWD/src/utmpmac.h
 | 
			
		||||
 | 
			
		||||
OTHER_FILES += \
 | 
			
		||||
    $$PWD/src/qmldir \
 | 
			
		||||
 
 | 
			
		||||
@@ -409,8 +409,6 @@ public slots:
 | 
			
		||||
    /////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
    /////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
    void banana(int x, int y, int z, int w);
 | 
			
		||||
 | 
			
		||||
    void setSession(KSession * session);
 | 
			
		||||
    KSession * getSession() const { return m_session; }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -135,6 +135,10 @@ extern "C" {
 | 
			
		||||
# endif
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#if defined (__APPLE__)
 | 
			
		||||
#include "utmpmac.h"
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
//#include <kdebug.h>
 | 
			
		||||
//#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
 | 
			
		||||
							
								
								
									
										21
									
								
								konsole-qml-plugin/src/utmpmac.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								konsole-qml-plugin/src/utmpmac.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
#if defined (__APPLE__)
 | 
			
		||||
#include <utmp.h>
 | 
			
		||||
 | 
			
		||||
#include <cstdio>
 | 
			
		||||
#include <cstdlib>
 | 
			
		||||
#include <cstring>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <sys/stat.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