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 | ||||||
		Reference in New Issue
	
	Block a user