Compare commits
16 Commits
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
|
# Others
|
||||||
|
|
||||||
*.xcf
|
*.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**
|
**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):
|
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
|
TEMPLATE =subdirs
|
||||||
CONFIG += ordered
|
CONFIG += ordered
|
||||||
SUBDIRS= konsole-qml-plugin\
|
SUBDIRS= konsole-qml-plugin
|
||||||
app
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -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 \
|
||||||
|
$$PWD/src/utmpmac.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
$$PWD/src/plugin.h \
|
$$PWD/src/plugin.h \
|
||||||
@ -75,6 +76,7 @@ HEADERS += \
|
|||||||
$$PWD/src/ColorScheme.h \
|
$$PWD/src/ColorScheme.h \
|
||||||
$$PWD/src/TerminalDisplay.h \
|
$$PWD/src/TerminalDisplay.h \
|
||||||
$$PWD/src/ksession.h
|
$$PWD/src/ksession.h
|
||||||
|
$$PWD/src/utmpmac.h
|
||||||
|
|
||||||
OTHER_FILES += \
|
OTHER_FILES += \
|
||||||
$$PWD/src/qmldir \
|
$$PWD/src/qmldir \
|
||||||
|
@ -409,8 +409,6 @@ public slots:
|
|||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
void banana(int x, int y, int z, int w);
|
|
||||||
|
|
||||||
void setSession(KSession * session);
|
void setSession(KSession * session);
|
||||||
KSession * getSession() const { return m_session; }
|
KSession * getSession() const { return m_session; }
|
||||||
|
|
||||||
|
@ -135,6 +135,10 @@ extern "C" {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined (__APPLE__)
|
||||||
|
#include "utmpmac.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
//#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
|
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
|
Loading…
x
Reference in New Issue
Block a user