Merge branch 'master' of gitosis@majnematic.com:davesdots

This commit is contained in:
David Majnemer 2010-10-22 02:30:22 -05:00
commit 21d9d0dffe
5 changed files with 244 additions and 10 deletions

130
answerback.c Normal file
View file

@ -0,0 +1,130 @@
#define _POSIX_C_SOURCE 200112L
#include <signal.h> /* for signal handling */
#include <stdio.h> /* fopen(), et al. */
#include <unistd.h> /* for ssize_t, read, write */
#include <stdlib.h> /* for EXIT_SUCCESS, EXIT_FAILURE */
#include <termios.h> /* ctermid, et al. */
int main()
{
const char *cterm = ctermid(NULL);
if (cterm == NULL)
{
fputs("Cannot get the path to the console", stderr);
}
FILE *fp;
if((fp = fopen(cterm, "r+b")) == NULL)
{
perror("open");
return EXIT_SUCCESS;
}
int fd = fileno(fp);
if (fd == -1)
{
perror("fileno");
return EXIT_FAILURE;
}
setbuf(fp, NULL);
sigset_t new_sig;
if (sigemptyset(&new_sig) == -1)
{
perror("sigemptyset");
return EXIT_FAILURE;
}
if (sigaddset(&new_sig, SIGINT) == -1)
{
perror("sigaddset");
return EXIT_FAILURE;
}
if (sigaddset(&new_sig, SIGTSTP) == -1)
{
perror("sigaddset");
return EXIT_FAILURE;
}
sigset_t old_sig;
if (sigprocmask(SIG_BLOCK, &new_sig, &old_sig) == -1)
{
perror("sigprocmask");
return EXIT_FAILURE;
}
struct termios old_term;
if (tcgetattr(fd, &old_term) == -1)
{
perror("tcgetattr");
return EXIT_FAILURE;
}
struct termios new_term = old_term;
new_term.c_lflag &= ~(ECHO | ECHOE | ECHOK | ECHONL | ICANON);
new_term.c_cc[VMIN] = 0;
new_term.c_cc[VTIME] = 10;
if (tcsetattr(fd, TCSAFLUSH, &new_term) == -1)
{
perror("tcsetattr");
if (tcsetattr(fd, TCSAFLUSH, &old_term) == -1)
{
perror("tcsetattr");
}
return EXIT_FAILURE;
}
char code[1] = { 5 };
for (;;)
{
ssize_t ret = write(fd, code, sizeof(code));
if (ret == -1)
{
perror("write");
tcsetattr(fd, TCSAFLUSH, &old_term);
return EXIT_FAILURE;
}
else if (ret > 0)
{
break;
}
}
char buffer[16] = { 0 };
ssize_t ret = read(fd, buffer, sizeof(buffer) - 1);
if (ret == -1)
{
perror("read");
tcsetattr(fd, TCSAFLUSH, &old_term);
return EXIT_FAILURE;
}
buffer[ret] = '\0';
if (tcsetattr(fd, TCSAFLUSH, &old_term) == -1)
{
perror("tcsetattr");
return EXIT_FAILURE;
}
if (sigprocmask(SIG_SETMASK, &old_sig, NULL) == -1)
{
perror("sigprocmask");
return EXIT_FAILURE;
}
if (fclose(fp) == EOF)
{
perror("fclose");
return EXIT_FAILURE;
}
if (ret > 0)
{
puts(buffer);
return EXIT_SUCCESS;
}
return EXIT_FAILURE;
}

View file

@ -1,3 +0,0 @@
" $URL: https://lampsvn.epfl.ch/svn-repos/scala/scala-tool-support/trunk/src/vim/ftdetect/scala.vim $
au BufRead,BufNewFile *.scala set filetype=scala

View file

@ -1,7 +1,7 @@
" Vim syntax file " Vim syntax file
" Language: llvm " Language: llvm
" Maintainer: The LLVM team, http://llvm.org/ " Maintainer: The LLVM team, http://llvm.org/
" Version: $Revision: 97271 $ " Version: $Revision$
if version < 600 if version < 600
syntax clear syntax clear
@ -49,6 +49,7 @@ syn keyword llvmKeyword hidden protected default
syn keyword llvmKeyword except deplibs syn keyword llvmKeyword except deplibs
syn keyword llvmKeyword volatile fastcc coldcc cc ccc syn keyword llvmKeyword volatile fastcc coldcc cc ccc
syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc syn keyword llvmKeyword x86_stdcallcc x86_fastcallcc
syn keyword llvmKeyword ptx_kernel ptx_device
syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn syn keyword llvmKeyword signext zeroext inreg sret nounwind noreturn
syn keyword llvmKeyword nocapture byval nest readnone readonly noalias syn keyword llvmKeyword nocapture byval nest readnone readonly noalias
syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq syn keyword llvmKeyword inlinehint noinline alwaysinline optsize ssp sspreq
@ -57,14 +58,12 @@ syn keyword llvmKeyword module asm align tail to
syn keyword llvmKeyword addrspace section alias sideeffect c gc syn keyword llvmKeyword addrspace section alias sideeffect c gc
syn keyword llvmKeyword target datalayout triple syn keyword llvmKeyword target datalayout triple
syn keyword llvmKeyword blockaddress syn keyword llvmKeyword blockaddress
syn keyword llvmKeyword union
" Obsolete keywords. " Obsolete keywords.
syn keyword llvmError uninitialized implementation syn keyword llvmError getresult begin end
syn keyword llvmError getresult big little endian begin end
" Misc syntax. " Misc syntax.
syn match llvmIgnore /[%@]\d\+\>/ syn match llvmNoName /[%@]\d\+\>/
syn match llvmNumber /-\?\<\d\+\>/ syn match llvmNumber /-\?\<\d\+\>/
syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/ syn match llvmFloat /-\?\<\d\+\.\d*\(e[+-]\d\+\)\?\>/
syn match llvmFloat /\<0x\x\+\>/ syn match llvmFloat /\<0x\x\+\>/
@ -73,7 +72,7 @@ syn keyword llvmConstant zeroinitializer undef null
syn match llvmComment /;.*$/ syn match llvmComment /;.*$/
syn region llvmString start=/"/ skip=/\\"/ end=/"/ syn region llvmString start=/"/ skip=/\\"/ end=/"/
syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/ syn match llvmLabel /[-a-zA-Z$._][-a-zA-Z$._0-9]*:/
syn match llvmIdentifier /[%@][-a-zA-Z$._0-9][-a-zA-Z$._0-9]*/ syn match llvmIdentifier /[%@][-a-zA-Z$._][-a-zA-Z$._0-9]*/
" Syntax-highlight dejagnu test commands. " Syntax-highlight dejagnu test commands.
syn match llvmSpecialComment /;\s*RUN:.*$/ syn match llvmSpecialComment /;\s*RUN:.*$/
@ -99,7 +98,7 @@ if version >= 508 || !exists("did_c_syn_inits")
HiLink llvmKeyword Keyword HiLink llvmKeyword Keyword
HiLink llvmBoolean Boolean HiLink llvmBoolean Boolean
HiLink llvmFloat Float HiLink llvmFloat Float
HiLink llvmIgnore Ignore HiLink llvmNoName Identifier
HiLink llvmConstant Constant HiLink llvmConstant Constant
HiLink llvmSpecialComment SpecialComment HiLink llvmSpecialComment SpecialComment
HiLink llvmError Error HiLink llvmError Error

106
vim/syntax/proto.vim Normal file
View file

@ -0,0 +1,106 @@
" Protocol Buffers - Google's data interchange format
" Copyright 2008 Google Inc. All rights reserved.
" http://code.google.com/p/protobuf/
"
" Redistribution and use in source and binary forms, with or without
" modification, are permitted provided that the following conditions are
" met:
"
" * Redistributions of source code must retain the above copyright
" notice, this list of conditions and the following disclaimer.
" * Redistributions in binary form must reproduce the above
" copyright notice, this list of conditions and the following disclaimer
" in the documentation and/or other materials provided with the
" distribution.
" * Neither the name of Google Inc. nor the names of its
" contributors may be used to endorse or promote products derived from
" this software without specific prior written permission.
"
" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
" This is the Vim syntax file for Google Protocol Buffers.
"
" Usage:
"
" 1. cp proto.vim ~/.vim/syntax/
" 2. Add the following to ~/.vimrc:
"
" augroup filetype
" au! BufRead,BufNewFile *.proto setfiletype proto
" augroup end
"
" Or just create a new file called ~/.vim/ftdetect/proto.vim with the
" previous lines on it.
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case match
syn keyword pbTodo contained TODO FIXME XXX
syn cluster pbCommentGrp contains=pbTodo
syn keyword pbSyntax syntax import option
syn keyword pbStructure package message group
syn keyword pbRepeat optional required repeated
syn keyword pbDefault default
syn keyword pbExtend extend extensions to max
syn keyword pbRPC service rpc returns
syn keyword pbType int32 int64 uint32 uint64 sint32 sint64
syn keyword pbType fixed32 fixed64 sfixed32 sfixed64
syn keyword pbType float double bool string bytes
syn keyword pbTypedef enum
syn keyword pbBool true false
syn match pbInt /-\?\<\d\+\>/
syn match pbInt /\<0[xX]\x+\>/
syn match pbFloat /\<-\?\d*\(\.\d*\)\?/
" TODO: .proto also supports C-style block comments;
" see /usr/share/vim/vim70/syntax/c.vim for how it's done.
syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp
syn region pbString start=/"/ skip=/\\"/ end=/"/
syn region pbString start=/'/ skip=/\\'/ end=/'/
if version >= 508 || !exists("did_proto_syn_inits")
if version < 508
let did_proto_syn_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink pbTodo Todo
HiLink pbSyntax Include
HiLink pbStructure Structure
HiLink pbRepeat Repeat
HiLink pbDefault Keyword
HiLink pbExtend Keyword
HiLink pbRPC Keyword
HiLink pbType Type
HiLink pbTypedef Typedef
HiLink pbBool Boolean
HiLink pbInt Number
HiLink pbFloat Float
HiLink pbComment Comment
HiLink pbString String
delcommand HiLink
endif
let b:current_syntax = "proto"

2
vimrc
View file

@ -229,6 +229,8 @@ if has('autocmd')
autocmd FileType c,cpp :call <SID>cabbrev() autocmd FileType c,cpp :call <SID>cabbrev()
autocmd BufRead,BufNewFile *.mm set filetype=noweb autocmd BufRead,BufNewFile *.mm set filetype=noweb
autocmd BufRead,BufNewFile *.scala set filetype=scala
autocmd BufRead,BufNewFile *.proto setfiletype proto
endif endif
" make tab reindent in normal mode " make tab reindent in normal mode