Quillpad is a free online Indian language typing tool. You can type in Hindi, Gujarati, Punjabi, Marathi, Telugu, Tamil, Kannada, Malayalam, Bengali and Nepali.
Link: Quillpad
Something useful???
Quillpad is a free online Indian language typing tool. You can type in Hindi, Gujarati, Punjabi, Marathi, Telugu, Tamil, Kannada, Malayalam, Bengali and Nepali.
Link: Quillpad
;;; Wrapper to make .emacs self-compiling.
(defvar init-top-level t)
(if init-top-level
(progn
;; ============================
;; Setup syntax, background, and foreground coloring
;; ============================
(set-background-color "Black")
(set-foreground-color "White")
(set-cursor-color "LightSkyBlue")
(set-mouse-color "LightSkyBlue")
(global-font-lock-mode t)
(setq font-lock-maximum-decoration t)
;; User Information
(setq user-full-name "Karthikeyan Periasamy")
(setq user-mail-address "karthikeyan.periasamy@adckrone.com")
;; Tab using spaces
(setq-default indent-tabs-mode nil)
;; ============================
;; Key mappings
;; ============================
(global-set-key [delete] 'delete-char)
(global-set-key [backspace] 'delete-backward-char)
;;; Key binding for sqitching to next and previous buffer
(global-set-key '[C-tab] 'bs-cycle-next)
;; use F1 key to go to a man page
(global-set-key [f1] 'man)
;; use F2 to save current buffer
(global-set-key [f2] 'save-buffer)
;; use shift+F2 to save current buffer to other file - "Save As"
(global-set-key [(shift f2)] 'write-file)
;; use F3 to check spelling
(global-set-key [f3] 'ispell-word)
;; use F4 key to kill current buffer
(global-set-key [f4] 'kill-this-buffer)
;; use F5 to compile
(global-set-key [f5] 'compile)
;; use F6 to change file mode to hexl
(global-set-key [f6] 'hexl-mode)
;; use F7 to open files in hex mode
(global-set-key [f7] 'hexl-mode-exit)
;; Now bind the delete line function to the F8 key
(global-set-key [f8] 'nuke-line)
;; use F9 to open files in hex mode
(global-set-key [f9] 'hexl-find-file)
;; use F10 to get help (apropos)
(global-set-key [f10] 'apropos)
;; goto line function C-c C-g
(global-set-key [ (control c) (control g) ] 'goto-line)
;; undo and redo functionality with special module
(require 'redo)
(global-set-key (kbd "C-+") 'redo)
;; keys for buffer creation and navigation
(global-set-key [(control x) (control b)] 'iswitchb-buffer)
;; Backup directory to store all files which end with "~"
;; Enable backup files.
(setq make-backup-files t)
;; Enable versioning with default values (keep five last versions, I think!)
(setq version-control t)
;; Save all backup file in this directory.
(setq backup-directory-alist (quote ((".*" . "~/.emacs.d/backups/"))))
;; Set standard indent to 2
(setq standard-indent 2)
;; ============================
;; Mouse Settings
;; ============================
;; mouse button one drags the scroll bar
(global-set-key [vertical-scroll-bar down-mouse-1] 'scroll-bar-drag)
;; setup scroll mouse settings
(defun up-slightly () (interactive) (scroll-up 5))
(defun down-slightly () (interactive) (scroll-down 5))
(global-set-key [mouse-4] 'down-slightly)
(global-set-key [mouse-5] 'up-slightly)
(defun up-one () (interactive) (scroll-up 1))
(defun down-one () (interactive) (scroll-down 1))
(global-set-key [S-mouse-4] 'down-one)
(global-set-key [S-mouse-5] 'up-one)
(defun up-a-lot () (interactive) (scroll-up))
(defun down-a-lot () (interactive) (scroll-down))
(global-set-key [C-mouse-4] 'down-a-lot)
(global-set-key [C-mouse-5] 'up-a-lot)
;; setup font
(set-default-font
"-Misc-Fixed-Medium-R-Normal--15-140-75-75-C-90-ISO8859-1")
;; No startup screen, if called with file name
;;(setq inhibit-startup-message t)
;; display the current time
(setq display-time-day-and-date t)
(display-time)
;; Show column number at bottom of screen
(setq column-number-mode 1)
;; show a menu only when running within X (save real estate when
;; in console)
;;(menu-bar-mode (if window-system 1 -1))
(menu-bar-mode nil)
;; alias y to yes and n to no
(defalias 'yes-or-no-p 'y-or-n-p)
;; Set the file end-of-line conversion type of the current buffer to Unix
;;(setq buffer-file-coding-system (coding-system-change-eol-conversion
;; buffer-file-coding-system 'unix))
(set-buffer-modified-p t)
(force-mode-line-update)
;; ===========================
;; Behaviour
;; ===========================
;; Pgup/dn will return exactly to the starting point.
(setq scroll-preserve-screen-position 1)
;; don't automatically add new lines when scrolling down at
;; the bottom of a buffer
(setq next-line-add-newlines nil)
;; scroll just one line when hitting the bottom of the window
(setq scroll-step 1)
(setq scroll-conservatively 1)
;; format the title-bar to always include the buffer name
;;(setq frame-title-format "emacs : %b : "(replace-regexp-in-string "\\([\.]\\)" "_" buffer-file-nam)"")
;;(setq frame-title-format "emacs : %b : %f")
;;(setq frame-title-format '(buffer-file-name "%f" ("%b")))
(setq frame-title-format
'("Emacs : " (buffer-file-name "%f" (dired-directory dired-directory "%b"))))
;; hide the scroll bar
(scroll-bar-mode nil)
;; turn off the toolbar
(if (>= emacs-major-version 21)
(tool-bar-mode -1))
;; turn on word wrapping in text mode
;;(add-hook 'text-mode-hook 'turn-on-auto-fill)
;; replace highlighted text with what I type rather than just
;; inserting at a point
(delete-selection-mode t)
;; resize the mini-buffer when necessary
(setq resize-minibuffer-mode t)
;; highlight during searching
(setq query-replace-highlight t)
;; highlight incremental search
(setq search-highlight t)
;; Enable uppercase or lowercase conversions
(put 'downcase-region 'disabled nil)
(put 'upcase-region 'disabled nil)
;; Stop ^M's from displaying in system shell window
(add-hook 'comint-output-filter-functions 'shell-strip-ctrl-m nil t)
;; ===========================
;; Buffer Navigation
;; ============================
;; Iswitchb is much nicer for inter-buffer navigation.
(cond ((fboundp 'iswitchb-mode) ; GNU Emacs 21
(iswitchb-mode 1))
((fboundp 'iswitchb-default-keybindings) ; Old-style activation
(iswitchb-default-keybindings))
(t nil)) ; Oh well.
;;cfg
(require 'cmssw-mode)
;; ======
;; C/C++
;; ======
(defun my-c-mode-common-hook ()
(turn-on-font-lock)
(c-set-offset 'substatement-open 0)
(c-set-offset 'case-label '+)
;; (c-set-offset 'arglist-cont-nonempty c-lineup-arglist)
)
(add-hook 'c-mode-common-hook 'my-c-mode-common-hook)
;; ============================
;; Set up which modes to use for which file extensions
;; ============================
(setq auto-mode-alist
(append
'(
("\\.h$" . c++-mode)
("\\.dps$" . pascal-mode)
("\\.py$" . python-mode)
("\\.Xdefaults$" . xrdb-mode)
("\\.Xenvironment$" . xrdb-mode)
("\\.Xresources$" . xrdb-mode)
("\\.tei$" . xml-mode)
("\\.php$" . php-mode)
) auto-mode-alist))
;; delete a line
;; First define a variable which will store the previous column position
(defvar previous-column nil "Save the column position")
;; Define the nuke-line function. The line is killed, then the newline
;; character is deleted. The column which the cursor was positioned at is then
;; restored. Because the kill-line function is used, the contents deleted can
;; be later restored by usibackward-delete-char-untabifyng the yank commands.
(defun nuke-line()
"Kill an entire line, including the trailing newline character"
(interactive)
;; Store the current column position, so it can later be restored for a more
;; natural feel to the deletion
(setq previous-column (current-column))
;; Now move to the end of the current line
(end-of-line)
;; Test the length of the line. If it is 0, there is no need for a
;; kill-line. All that happens in this case is that the new-line character
;; is deleted.
(if (= (current-column) 0)
(delete-char 1)
;; This is the 'else' clause. The current line being deleted is not zero
;; in length. First remove the line by moving to its start and then
;; killing, followed by deletion of the newline character, and then
;; finally restoration of the column position.
(progn
(beginning-of-line)
(kill-line)
(delete-char 1)
(move-to-column previous-column))))
;; Diasble \C-t
(global-unset-key "\C-t")
(global-set-key "\C-t\C-a" 'c-indent-buffer)
;; indent the entire buffer
(defun c-indent-buffer ()
"Indent entire buffer of C source code."
(interactive)
(save-excursion
(goto-char (point-min))
(while (< (point) (point-max))
(c-indent-command)
(end-of-line)
(forward-char 1))))
;; set up the compiling options
(setq compile-command "make"
compilation-ask-about-save nil
compilation-window-height 10)
))
You have to install some el files.
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#define __KERNEL__
#include <asm/types.h>
#undef __KERNEL__
#include <linux/ethtool.h>
#include <linux/sockios.h>
#include <net/if.h>
#include <sys/ioctl.h>
#include <arpa/inet.h>
/* this is straight from beej's network tutorial. It is a nice wrapper
* for inet_ntop and helpes to make the program IPv6 ready
*/
char *get_ip_str(const struct sockaddr *sa, char *s, size_t maxlen)
{
switch(sa->sa_family) {
case AF_INET:
inet_ntop(AF_INET, &(((struct sockaddr_in *)sa)->sin_addr), s, maxlen);
break;
case AF_INET6:
inet_ntop(AF_INET6, &(((struct sockaddr_in6 *)sa)->sin6_addr), s, maxlen);
break;
default:
strncpy(s, "Unknown AF", maxlen);
return NULL;
}
return s;
}
int main (int argc, char **argv)
{
char buf[1024] = {0};
struct ifconf ifc = {0};
struct ifreq *ifr = NULL;
int sck = 0;
int nInterfaces = 0;
int i = 0;
struct ifreq ifr_subnet;
struct sockaddr *addr_subnet = NULL;
/* Get a socket handle. */
sck = socket(AF_INET, SOCK_DGRAM, 0);
if(-1 == sck) {
perror("socket");
return 1;
}
/* Query available interfaces. */
ifc.ifc_len = sizeof(buf);
ifc.ifc_buf = buf;
if(-1 == ioctl(sck, SIOCGIFCONF, &ifc)) {
perror("ioctl(SIOCGIFCONF)");
close (sck);
return 1;
}
/* Iterate through the list of interfaces. */
ifr = ifc.ifc_req;
nInterfaces = ifc.ifc_len / sizeof(struct ifreq);
for(i = 0; i < nInterfaces; i++)
{
struct ifreq *item = &ifr[i];
/* Show the device name and IP address */
struct sockaddr *addr = &(item->ifr_addr);
char ip[INET6_ADDRSTRLEN];
printf("%s: IP %s",
item->ifr_name,
get_ip_str(addr, ip, INET6_ADDRSTRLEN));
/* Get the MAC address */
if(-1 == ioctl(sck, SIOCGIFHWADDR, item)) {
perror("ioctl(SIOCGIFHWADDR)");
close (sck);
return 1;
}
/* display result */
printf(", MAC %.2x:%.2x:%.2x:%.2x:%.2x:%.2x ",
(unsigned char)item->ifr_hwaddr.sa_data[0],
(unsigned char)item->ifr_hwaddr.sa_data[1],
(unsigned char)item->ifr_hwaddr.sa_data[2],
(unsigned char)item->ifr_hwaddr.sa_data[3],
(unsigned char)item->ifr_hwaddr.sa_data[4],
(unsigned char)item->ifr_hwaddr.sa_data[5]);
/* Reset the memory allocated for ifreq */
memset (&ifr_subnet, 0, sizeof (struct ifreq));
/* Update interface name into ifreq */
strcpy (ifr_subnet.ifr_name, item->ifr_name);
/* Call ioctl function */
if(-1 == ioctl (sck, SIOCGIFNETMASK, &ifr_subnet ))
{
perror("ioctl(SIOCGIFNETMASK)");
close (sck);
return 1;
}
addr_subnet = &(ifr_subnet.ifr_addr);
printf("SubnetMask: %s\n", get_ip_str(addr_subnet, ip, INET6_ADDRSTRLEN));
}
close (sck);
return 0;
}
Reference: http://www.adamrisi.com/?p=84
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/signal.h>
#include <string.h>
#define DEFDATALEN 56
#define MAXIPLEN 60
#define MAXICMPLEN 76
static char *hostname = NULL;
static int in_cksum(unsigned short *buf, int sz)
{
int nleft = sz;
int sum = 0;
unsigned short *w = buf;
unsigned short ans = 0;
while (nleft > 1) {
sum += *w++;
nleft -= 2;
}
if (nleft == 1) {
*(unsigned char *) (&ans) = *(unsigned char *) w;
sum += ans;
}
sum = (sum >> 16) + (sum & 0xFFFF);
sum += (sum >> 16);
ans = ˜sum;
return (ans);
}
static void noresp(int ign)
{
printf("No response from %s\n", hostname);
exit(0);
}
static void ping(const char *host)
{
struct hostent *h;
struct sockaddr_in pingaddr;
struct icmp *pkt;
int pingsock, c;
char packet[DEFDATALEN + MAXIPLEN + MAXICMPLEN];
if ((pingsock = socket(AF_INET, SOCK_RAW, 1)) < 0) { /* 1 == ICMP */
perror("ping: creating a raw socket");
exit(1);
}
/* drop root privs if running setuid */
setuid(getuid());
memset(&pingaddr, 0, sizeof(struct sockaddr_in));
pingaddr.sin_family = AF_INET;
if (!(h = gethostbyname(host))) {
fprintf(stderr, "ping: unknown host %s\n", host);
exit(1);
}
memcpy(&pingaddr.sin_addr, h->h_addr, sizeof(pingaddr.sin_addr));
hostname = h->h_name;
pkt = (struct icmp *) packet;
memset(pkt, 0, sizeof(packet));
pkt->icmp_type = ICMP_ECHO;
pkt->icmp_cksum = in_cksum((unsigned short *) pkt, sizeof(packet));
c = sendto(pingsock, packet, sizeof(packet), 0,
(struct sockaddr *) &pingaddr, sizeof(struct sockaddr_in));
if (c < 0 || c != sizeof(packet)) {
if (c < 0)
perror("ping: sendto");
fprintf(stderr, "ping: write incomplete\n");
exit(1);
}
signal(SIGALRM, noresp);
alarm(2); /* give the host 5000ms to respond */
/* listen for replies */
while (1) {
struct sockaddr_in from;
size_t fromlen = sizeof(from);
if ((c = recvfrom(pingsock, packet, sizeof(packet), 0,
(struct sockaddr *) &from, &fromlen)) < 0) {
if (errno == EINTR)
continue;
perror("ping: recvfrom");
continue;
}
if (c >= 76) { /* ip + icmp */
struct iphdr *iphdr = (struct iphdr *) packet;
pkt = (struct icmp *) (packet + (iphdr->ihl << 2)); /* skip ip hdr */
if (pkt->icmp_type == ICMP_ECHOREPLY)
break;
}
}
printf("%s is alive!\n", hostname);
return;
}
int main ()
{
ping ("192.168.1.2");
}
Reference: http://www.koders.com/c/fid30EA22902AFF5800481BBC6F65DADCDAF92D6E37.aspx
Optional Packages:
--with-unit-test Create binary to unit test the library package
(default is no)AC_MSG_CHECKING([--with-unit-test])
AC_ARG_WITH(unit-test,
AC_HELP_STRING([--with-unit-test], [Create binary to unit test the library package (default is no)]),
[unittest="yes"],
[unittest="no"]
)
AM_CONDITIONAL(UNIT_TEST, test "$unittest" = "yes")
AC_MSG_RESULT([$unittest])bindir = $(prefix)/usr/local/bin
libdir = $(prefix)/usr/local/lib
if UNIT_TEST
bin_PROGRAMS = unittest
unittest_SOURCES = source1.c \
Source2.c
unittest_CFLAGS = -I@top_srcdir@/include \
-DUNIT_TEST
unittest_LDFLAGS =
else
lib_LTLIBRARIES = libunittest.la
libunittest_la_SOURCES = source2.c \
source3.c
libunittest_la_CFLAGS = -I@top_srcdir@/include
libunittest_la_LDFLAGS = -version-info 0:1:0
endif
periask@ubuntu:~$ mkdir -vp packaging/Payload mkdir: created directory `packaging mkdir: created directory `packaging/Payload' periask@ubuntu:~$ cd packaging/Payload periask@ubuntu:~/packaging/Payload$ cp --preserve=mode -rl <installables> . periask@ubuntu:~/packaging/Payload$ tar zcf ../Payload.tar.gz . periask@ubuntu:~/packaging/Payload$ cd .. periask@ubuntu:~/packaging$
#!/bin/bash
# Get the starting point of the tar ball
SKIP=`awk '/^__ARCHIVE__/ { print NR + 1; exit 0; }' $0`
# Do pre-installation steps here.
# Extracting the tar ball Which is appended to this file
tail -n "+$SKIP" $0 >/dev/null 2>&1
if [ $? -eq 0 ]; then
tail -n +$SKIP $0 | gunzip -c | tar -C / -xvf -
else
tail +$SKIP $0 | gunzip -c | tar -C / -xvf -
fi
# Do post-installation steps here.
exit 0
__ARCHIVE__
periask@ubuntu:~/packaging$ cat installer Payload.tar.gz > Package-Version.sh periask@ubuntu:~/packaging$ chmod +x Package-Version.sh