Commit 3353b49b authored by Roshan Rabinarayan's avatar Roshan Rabinarayan

file_get searches key

parent 2cff26e1
...@@ -51,7 +51,7 @@ void file_del(off_t offset, char *key) ...@@ -51,7 +51,7 @@ void file_del(off_t offset, char *key)
sem_post(&mutex[index]); sem_post(&mutex[index]);
} }
void file_get(off_t offset, char *key, char *value) void file_get(char *key, char *value)
{ {
/* Gets the value stored at offset */ /* Gets the value stored at offset */
/* Does not depend on key argument */ /* Does not depend on key argument */
...@@ -62,25 +62,24 @@ void file_get(off_t offset, char *key, char *value) ...@@ -62,25 +62,24 @@ void file_get(off_t offset, char *key, char *value)
if(readCounters[index]==1) if(readCounters[index]==1)
sem_wait(&mutex[index]); sem_wait(&mutex[index]);
sem_post(&readerLocks[index]); sem_post(&readerLocks[index]);
char *line;
lseek(fds[index], offset, SEEK_SET);
char line[10];
//FILE *fp =fdopen(fds[index],"r+"); //FILE *fp =fdopen(fds[index],"r+");
// fseek(fp, offset,SEEK_SET); // fseek(fp, offset,SEEK_SET);
size_t len=0; size_t len=0;
char ch; char ch;
int k=-1; int k=-1;
while(read(fds[index], &ch,sizeof(ch))!=-1 && ch!='\n')
{ FILE *fp=fdopen(fds[index],"r+");
if(k>=0) while ((getline(&line, &len, fp)) != -1)
{
value[k++]=ch;
}
if(ch==':')
{ {
k=0; char *fkey=strtok(line,":");
char *fvalue=strtok(NULL,":");
if(strcmp(key,fkey)==0){
memcpy(value,fvalue,strlen(fvalue));
break;
} }
} }
sem_wait(&readerLocks[index]); sem_wait(&readerLocks[index]);
readCounters[index]-=1; readCounters[index]-=1;
...@@ -107,6 +106,13 @@ off_t file_put(char *key,char *value) { ...@@ -107,6 +106,13 @@ off_t file_put(char *key,char *value) {
sem_post(&mutex[index]); sem_post(&mutex[index]);
return position; return position;
}
void file_search(char *key,char *value)
{
int index=modulus(key,256,setSize);
} }
int main() int main()
{ {
...@@ -146,8 +152,8 @@ int main() ...@@ -146,8 +152,8 @@ int main()
offset = file_put(prevkey, "value1"); offset = file_put(prevkey, "value1");
offset = file_put(key, value); offset = file_put(key, value);
file_get(9, prevkey, value); // Doesnot depend on key arg, returns key and value at offset 0 file_get(prevkey, value); // Doesnot depend on key arg, returns key and value at offset 0
printf("%s\n", value); printf("%s\n", value);
file_del(offset, prevkey); //file_del(offset, prevkey);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment