smd.c revision dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0
1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdio.h> 2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <string.h> 3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <fcntl.h> 4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <errno.h> 5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectint smd_main(int argc, char **argv) 7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{ 8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project int fd, len, r, port = 0; 9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project char devname[32]; 10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if((argc > 0) && (argv[0][0] == '-')) { 14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project port = atoi(argv[0] + 1); 15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project 19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project sprintf(devname,"/dev/smd%d",port); 20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fd = open(devname, O_WRONLY); 21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(fd < 0) { 22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr,"failed to open smd0 - %s\n", 23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project strerror(errno)); 24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return -1; 25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project while(argc > 0) { 27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project len = strlen(argv[0]); 28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project r = write(fd, argv[0], len); 29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project if(r != len) { 30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project fprintf(stderr,"failed to write smd0 (%d) %s\n", 31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project r, strerror(errno)); 32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return -1; 33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argc--; 35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project argv++; 36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project write(fd, argc ? " " : "\r", 1); 37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project } 38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project close(fd); 39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project return 0; 40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project} 41