#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifndef NULL
#define NULL ((void *) 0)
#endif
char* ext;
char *remove_ext (char* mystr) {
char *retstr, *lastdot, *lastsep;
char dot = '.';
char slash = '/';
char *temp;
if (mystr == NULL)
return NULL;
return NULL;
if (lastdot != NULL) {
if (lastsep != NULL) {
if (lastsep < lastdot) {
*temp = *lastdot;
*lastdot = '\0';
}
}
else {
// Has extension separator with no path separator.
*lastdot = '\0';
}
}
// Return the modified string.
return retstr;
}
int main(int argc, char* argv[]){
char buf[128];
int infile,fileread,outfile;
infile = open(argv[1], O_RDONLY);
char *filename,*newfile;
filename = remove_ext(argv[1]);
int linecount=0;
int filecounter = 0;
while(fileread=read(infile, buf, sizeof(buf))>0)
{
sprintf(newfile
,"%c%d%c",*filename
,filecounter
,*ext
); outfile = open(newfile, O_CREAT | O_APPEND | O_RDWR);
while(linecount<500)
{
if(fileread>0)
{
write(outfile, buf, sizeof(buf));
linecount++;
fileread=read(infile, buf, sizeof(buf));
}
}
filecounter++;
close(outfile);
newfile = NULL;
}
// lets open the input file
close(infile);
return 0;
}
I2luY2x1ZGUgPGZjbnRsLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaWZuZGVmIE5VTEwKI2RlZmluZSBOVUxMICAgKCh2b2lkICopIDApCiNlbmRpZgoKY2hhciogZXh0OwoKY2hhciAqcmVtb3ZlX2V4dCAoY2hhciogbXlzdHIpIHsKICAgIGNoYXIgKnJldHN0ciwgKmxhc3Rkb3QsICpsYXN0c2VwOwogICAgY2hhciBkb3QgPSAnLic7CiAgICBjaGFyIHNsYXNoID0gJy8nOwoJY2hhciAqdGVtcDsKICAgIGlmIChteXN0ciA9PSBOVUxMKQogICAgcmV0dXJuIE5VTEw7CiAgICBpZiAoKHJldHN0ciA9IChjaGFyICopbWFsbG9jIChzdHJsZW4gKG15c3RyKSArIDEpKSA9PSBOVUxMKQogICAgcmV0dXJuIE5VTEw7CiAgICBzdHJjcHkgKHJldHN0ciwgbXlzdHIpOwogICAgbGFzdGRvdCA9IHN0cnJjaHIgKHJldHN0ciwgZG90KTsKICAgIGxhc3RzZXAgPSBzdHJyY2hyIChyZXRzdHIsIHNsYXNoKTsKICAgIGlmIChsYXN0ZG90ICE9IE5VTEwpIHsKICAgICAgICBpZiAobGFzdHNlcCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGlmIChsYXN0c2VwIDwgbGFzdGRvdCkgewoJCQkJKnRlbXAgPSAqbGFzdGRvdDsKICAgICAgICAgICAgICAgIGV4dCA9IChjaGFyICopbWFsbG9jIChzdHJsZW4odGVtcCkrMSk7CiAgICAgICAgICAgICAgICBzdHJjcHkgKGV4dCwgdGVtcCk7CiAgICAgICAgICAgICAgICAqbGFzdGRvdCA9ICdcMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIEhhcyBleHRlbnNpb24gc2VwYXJhdG9yIHdpdGggbm8gcGF0aCBzZXBhcmF0b3IuCiAgICAgICAgICAgICpsYXN0ZG90ID0gJ1wwJzsKICAgICAgICB9CiAgICB9CiAgICAvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIHN0cmluZy4KICAgIHJldHVybiByZXRzdHI7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pewogICAgY2hhciBidWZbMTI4XTsKICAgIGludCBpbmZpbGUsZmlsZXJlYWQsb3V0ZmlsZTsKCWluZmlsZSA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpOwogICAgY2hhciAqZmlsZW5hbWUsKm5ld2ZpbGU7CiAgICBmaWxlbmFtZSA9IChjaGFyICopbWFsbG9jKHN0cmxlbihhcmd2WzFdKzEpKTsKICAgIGZpbGVuYW1lID0gcmVtb3ZlX2V4dChhcmd2WzFdKTsKICAgIG5ld2ZpbGUgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4oYXJndlsxXSszKSk7CglpbnQgbGluZWNvdW50PTA7CiAgICBpbnQgZmlsZWNvdW50ZXIgPSAwOwogICAgd2hpbGUoZmlsZXJlYWQ9cmVhZChpbmZpbGUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpPjApCiAgICB7CiAgICAgICAgc3ByaW50ZihuZXdmaWxlLCIlYyVkJWMiLCpmaWxlbmFtZSxmaWxlY291bnRlciwqZXh0KTsKCQlvdXRmaWxlID0gb3BlbihuZXdmaWxlLCBPX0NSRUFUIHwgT19BUFBFTkQgfCBPX1JEV1IpOwogICAgICAgIHdoaWxlKGxpbmVjb3VudDw1MDApCiAgICAgICAgewogICAgICAgICAgICBpZihmaWxlcmVhZD4wKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICB3cml0ZShvdXRmaWxlLCBidWYsIHNpemVvZihidWYpKTsKICAgICAgICAgICAgICAgIGxpbmVjb3VudCsrOwogICAgICAgICAgICAgICAgZmlsZXJlYWQ9cmVhZChpbmZpbGUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZpbGVjb3VudGVyKys7CgkJY2xvc2Uob3V0ZmlsZSk7CgkJbmV3ZmlsZSA9IE5VTEw7CiAgICB9CiAgICAKICAgIC8vIGxldHMgb3BlbiB0aGUgaW5wdXQgZmlsZQoJY2xvc2UoaW5maWxlKTsKCXJldHVybiAwOwp9Cg==
I2luY2x1ZGUgJmx0O2ZjbnRsLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdGRpby5oJmd0OwojaW5jbHVkZSAmbHQ7c3RkbGliLmgmZ3Q7CiNpbmNsdWRlICZsdDtzdHJpbmcuaCZndDsKI2luY2x1ZGUgJmx0O3VuaXN0ZC5oJmd0OwojaWZuZGVmIE5VTEwKI2RlZmluZSBOVUxMICAgKCh2b2lkICopIDApCiNlbmRpZgoKY2hhciogZXh0OwoKY2hhciAqcmVtb3ZlX2V4dCAoY2hhciogbXlzdHIpIHsKICAgIGNoYXIgKnJldHN0ciwgKmxhc3Rkb3QsICpsYXN0c2VwOwogICAgY2hhciBkb3QgPSAnLic7CiAgICBjaGFyIHNsYXNoID0gJy8nOwoJY2hhciAqdGVtcDsKICAgIGlmIChteXN0ciA9PSBOVUxMKQogICAgcmV0dXJuIE5VTEw7CiAgICBpZiAoKHJldHN0ciA9IChjaGFyICopbWFsbG9jIChzdHJsZW4gKG15c3RyKSArIDEpKSA9PSBOVUxMKQogICAgcmV0dXJuIE5VTEw7CiAgICBzdHJjcHkgKHJldHN0ciwgbXlzdHIpOwogICAgbGFzdGRvdCA9IHN0cnJjaHIgKHJldHN0ciwgZG90KTsKICAgIGxhc3RzZXAgPSBzdHJyY2hyIChyZXRzdHIsIHNsYXNoKTsKICAgIGlmIChsYXN0ZG90ICE9IE5VTEwpIHsKICAgICAgICBpZiAobGFzdHNlcCAhPSBOVUxMKSB7CiAgICAgICAgICAgIGlmIChsYXN0c2VwICZsdDsgbGFzdGRvdCkgewoJCQkJKnRlbXAgPSAqbGFzdGRvdDsKICAgICAgICAgICAgICAgIGV4dCA9IChjaGFyICopbWFsbG9jIChzdHJsZW4odGVtcCkrMSk7CiAgICAgICAgICAgICAgICBzdHJjcHkgKGV4dCwgdGVtcCk7CiAgICAgICAgICAgICAgICAqbGFzdGRvdCA9ICdcMCc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIEhhcyBleHRlbnNpb24gc2VwYXJhdG9yIHdpdGggbm8gcGF0aCBzZXBhcmF0b3IuCiAgICAgICAgICAgICpsYXN0ZG90ID0gJ1wwJzsKICAgICAgICB9CiAgICB9CiAgICAvLyBSZXR1cm4gdGhlIG1vZGlmaWVkIHN0cmluZy4KICAgIHJldHVybiByZXRzdHI7Cn0KCmludCBtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pewogICAgY2hhciBidWZbMTI4XTsKICAgIGludCBpbmZpbGUsZmlsZXJlYWQsb3V0ZmlsZTsKCWluZmlsZSA9IG9wZW4oYXJndlsxXSwgT19SRE9OTFkpOwogICAgY2hhciAqZmlsZW5hbWUsKm5ld2ZpbGU7CiAgICBmaWxlbmFtZSA9IChjaGFyICopbWFsbG9jKHN0cmxlbihhcmd2WzFdKzEpKTsKICAgIGZpbGVuYW1lID0gcmVtb3ZlX2V4dChhcmd2WzFdKTsKICAgIG5ld2ZpbGUgPSAoY2hhciAqKW1hbGxvYyhzdHJsZW4oYXJndlsxXSszKSk7CglpbnQgbGluZWNvdW50PTA7CiAgICBpbnQgZmlsZWNvdW50ZXIgPSAwOwogICAgd2hpbGUoZmlsZXJlYWQ9cmVhZChpbmZpbGUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpJmd0OzApCiAgICB7CiAgICAgICAgc3ByaW50ZihuZXdmaWxlLCZxdW90OyVjJWQlYyZxdW90OywqZmlsZW5hbWUsZmlsZWNvdW50ZXIsKmV4dCk7CgkJb3V0ZmlsZSA9IG9wZW4obmV3ZmlsZSwgT19DUkVBVCB8IE9fQVBQRU5EIHwgT19SRFdSKTsKICAgICAgICB3aGlsZShsaW5lY291bnQmbHQ7NTAwKQogICAgICAgIHsKICAgICAgICAgICAgaWYoZmlsZXJlYWQmZ3Q7MCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgd3JpdGUob3V0ZmlsZSwgYnVmLCBzaXplb2YoYnVmKSk7CiAgICAgICAgICAgICAgICBsaW5lY291bnQrKzsKICAgICAgICAgICAgICAgIGZpbGVyZWFkPXJlYWQoaW5maWxlLCBidWYsIHNpemVvZihidWYpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmaWxlY291bnRlcisrOwoJCWNsb3NlKG91dGZpbGUpOwoJCW5ld2ZpbGUgPSBOVUxMOwogICAgfQogICAgCiAgICAvLyBsZXRzIG9wZW4gdGhlIGlucHV0IGZpbGUKCWNsb3NlKGluZmlsZSk7CglyZXR1cm4gMDsKfQo=
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifndef NULL
#define NULL ((void *) 0)
#endif
char* ext;
char *remove_ext (char* mystr) {
char *retstr, *lastdot, *lastsep;
char dot = '.';
char slash = '/';
char *temp;
if (mystr == NULL)
return NULL;
if ((retstr = (char *)malloc (strlen (mystr) + 1)) == NULL)
return NULL;
strcpy (retstr, mystr);
lastdot = strrchr (retstr, dot);
lastsep = strrchr (retstr, slash);
if (lastdot != NULL) {
if (lastsep != NULL) {
if (lastsep < lastdot) {
*temp = *lastdot;
ext = (char *)malloc (strlen(temp)+1);
strcpy (ext, temp);
*lastdot = '\0';
}
}
else {
// Has extension separator with no path separator.
*lastdot = '\0';
}
}
// Return the modified string.
return retstr;
}
int main(int argc, char* argv[]){
char buf[128];
int infile,fileread,outfile;
infile = open(argv[1], O_RDONLY);
char *filename,*newfile;
filename = (char *)malloc(strlen(argv[1]+1));
filename = remove_ext(argv[1]);
newfile = (char *)malloc(strlen(argv[1]+3));
int linecount=0;
int filecounter = 0;
while(fileread=read(infile, buf, sizeof(buf))>0)
{
sprintf(newfile,"%c%d%c",*filename,filecounter,*ext);
outfile = open(newfile, O_CREAT | O_APPEND | O_RDWR);
while(linecount<500)
{
if(fileread>0)
{
write(outfile, buf, sizeof(buf));
linecount++;
fileread=read(infile, buf, sizeof(buf));
}
}
filecounter++;
close(outfile);
newfile = NULL;
}
// lets open the input file
close(infile);
return 0;
}