Compare commits
	
		
			16 Commits
		
	
	
		
			fix-color-
			...
			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